Всем здрасти. У меня такая проблема. Хотел использовать команды in out под as но жестоко обламался. Пишет Error: suffix or operands invalid for `in' , так-же и out. Подскажите, может быть есть аналоги этих команд, или ещё чё-нибудь. Зарание пасибо.
С 16x битными регистрами пишет ошибка сегментирования Код (Text): mov $888,%dx mov $0001,%ax out %ax,%dx
В смысле, Segmentation fault во время выполнения? Всё правильно, кто же даст доступ к портам заурядной прикладной программе? Скомпилировать можно, только работать это не может. Код (Text): out %eax,%dx
treekool Рекомендую dosemu -- ему можно в конфиге прописать к каким портам давать эмулируемой машине прямой доступ А если хочется писать именно linux-native код, то есть два варианта: либо из ядра, либо можно поковырять dosemu на тему того, как он делает: dosemu никаких своих драйверов не грузит. Правда есть у меня некоторое сомнение, что я видел в конфигураторе ядра какие-то опции в описании которых упоминался dosemu. Но даже если и так, какая разница. Можно, но я не знаю как. У тебя есть всё, для того чтобы заняться самостоятельным исследованием. Я б, например, с удовольствием услышал бы как это сделать...
Из-под root можно и без драйверов: есть две функции ioperm() и iopl() - первая открывает доступ к указанному диапазону адресов, вторая понижает IOPL, что приводит к возможности доступа к любым портам, а также вещам типа cli/sti/hlt.
Простите меня за мою тупость. Пожалуйста кто нибудь покжите хоть один пример использования через ядро. Буду очень рад
http://linux.die.net/man/2/outb http://www.google.com/search?hl=en&safe=off&q=kernel+outb&btnG=Search