Cделать из intel core i5-3210m intel 8086

Автор castanel, 23 апреля 2015, 16:56:05

« назад - далее »

0 Пользователи и 3 гостей просматривают эту тему.

castanel

Эта программа-бипер на Си адекватна для intel 8086.
#include <stdlib.h>
#include <stdio.h>
main()
{
   int store;
   store = inp (97);
   printf("port 97 = %d\n", store);
   outp(97, 79);
   outp(97, store);
}

На intel core i5-3210m gcc пишет при buildе
Цитироватьundefined reference to `inp'|
undefined reference to `outp'|
undefined reference to `outp'|
.
Есть такая библиотека, чтобы эти операторы стали делать на новом проце то же, что на старом?
***
IDE - codeblocks, ось - jessie

ihammers

Цитата: castanel от 23 апреля 2015, 16:56:05Есть такая библиотека, чтобы эти операторы стали делать на новом проце то же, что на старом?
Проблема не в старом/новом процессоре, а в реализации inp и outp, которые не описаны в stdio.h, stdlib.h.

Дополнительная информация: stackoverflow, msdn.

Вам нужно искать реализацию inp(), outp() или переписывать исходную программу.

PS: Вечером постараюсь обновить сообщение.
Debian GNU/Linux Bookworm, LXQt/OpenBox: AMD Ryzen 5 5600G / 64Gb RAM
_______________________________
Debian GNU/Linux Bookworm, без графики: AMD Phenon X4 / 16Gb RAM
_______________________________
Debian GNU/Linux Bookworm, LXQt/OpenBox: Acer Aspire One 722 AMD C60 / 8Gb RAM / ATI HD6290

vic5710

а в чем смысл этих команд? они определены в conio.h, а это ЕМНИП для  MSDOS.
если просто звук то читайте man beep

castanel

#3
vic5710, подключал conio.h на w8, не повлияло. может операторы ввода и вывода процпортов стали другими? или библиотеку надо качать, а я не умею её втюхать компилятору
ihammers, переписать можно, если этим операторам есть простая замена

vic5710

Цитата: castanel от 24 апреля 2015, 16:09:12vic5710, подключал conio.h на w8, не повлияло. может операторы ввода и вывода процпортов стали другими? или библиотеку надо качать, а я не умею её втюхать компилятору
conio.h применялась в мсдос-вин3-вин95. на линухе ее вообще нет

castanel

vic5710, таки значит, операторы/библи нужны другие

vic5710

#6
http://forum.ubuntu.ru/index.php?topic=250560.0
http://www.opennet.ru/docs/HOWTO-RU/mini/IO-Port-Programming.html
скорей всего через /dev/port

Сообщение объединено: 24 апреля 2015, 18:54:45

http://www.linuxcookbook.ru/howto/mini/IO-Port-Programming/x47.html
три минуты гугла

castanel

vic5710, #include <asm/io.h> был бы панацеей, если б был. а dev/port - вообще метафизика.  /usr/include/asm/ в jessie нет, зато есть бесполезное для моей ситуации /usr/include/asm-generic/ioctl.h
поставил эту муть, но определений для inp и outp в последующем содержимом /usr/src/linux-headers-3.2.0-4-common/include/asm-generic/ не оказалось.

vic5710

#8
Цитата: castanel от 24 апреля 2015, 23:39:39поставил эту муть, но определений для inp и outp в последующем содержимом /usr/src/linux-headers-3.2.0-4-common/include/asm-generic/ не оказалось.
для такого древнего проца лучше откатиться. в сквизе /dev/port есть. inp/outp в линухе нет. читайте ссылки там пример есть


Сообщение объединено: 25 Апрель 2015, 00:13:43

https://packages.debian.org/search?suite=jessie&arch=i386&searchon=contents&keywords=asm%2Fio.h
man mknod

Сообщение объединено: 25 апреля 2015, 00:21:04

https://packages.debian.org/jessie/i386/linux-headers-3.16.0-4-common/filelist

Olej

Цитата: ihammers от 24 апреля 2015, 05:48:03
Вам нужно искать реализацию inp(), outp() или переписывать исходную программу.

Вот вам пример маленького работающего приожения с inp(), outp() ... нужные инклуды увидите сами ...

#include <stdio.h>
#include <unistd.h>
#include <sys/io.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>

#define PARPORT_BASE 0x378

void do_io( unsigned long addr ) {
   unsigned char zero = 0, readout = 0;
   printf( "\twriting: 0x%02x to 0x%lx\n", zero, addr );
   outb( zero, addr );
   usleep( 1000 );
   readout = inb( addr + 1 );
   printf( "\treading: 0x%02x from 0x%lx\n", readout, addr + 1 );
}