Я помню, как использовал функцию
geninterrupt(int interrupt_no)
(включен в dos.h
) для отображения строки на экране в Turbo C ++. Теперь, когда я пытаюсь скомпилировать ту же самую программу с g ++, компилятор кричит на меня.
C:\Users\Krish\Documents\rough.cpp|7|error: '_AH' was not declared in this scope|
C:\Users\Krish\Documents\rough.cpp|8|error: '_DX' was not declared in this scope|
C:\Users\Krish\Documents\rough.cpp|9|error: 'geninterrupt' was not declared in this scope|
Кажется, он даже не идентифицирует регистры. Что я делаю неправильно. Разве эти функции не являются частью стандартной библиотеки c ++? (Должен ли я явно связать библиотеки?). Если да, то как?
Вызов прерываний для получения напечатанной строки работал только на x86
совместимые процессоры, работающие в real mode
(который DOS побежал под). Современные операционные системы работают в protected mode
в котором прерывания BIOS больше не доступны.
Сегодня вывод консоли обычно представлен file handle
куда вы отправляете данные, используя стандартную библиотеку или, если вы хотите делать это на низком уровне, прямые функции ядра. (В системе POSIX вызов write
)
От Таблица системных вызовов Linux ты можешь использовать sys_write
доступно под int 0x80
(Вы должны использовать встроенную сборку, чтобы заполнить параметры и вызвать прерывание)
Других решений пока нет …