Не отыскал ответа в документации.
Согласно документации, в режиме x64 (AMD64, IA-32e) Interrupt gate имеет размер 16 байт. Всего их может быть 256. Помещаются они обычно в начале памяти, с адреса 0, то есть адрес gate'а удобно узнавать, умножая номер вектора прерывания на 16.
Простые вычисления показывают, что необходимо 4 КиБ памяти для хранения всех gate'ов. Это адреса с 0x0000 до 0x0FFF. Теперь смотрим в карту памяти и видим, что адреса
с 0x0400 до 0x04FF занимает BDA (BIOS data area).
Так вот, неужели из-за этого мне придётся делать одну из следующих вещей? -
- отказывать от всех 256 прерываний и делать только 64,
- поместить gate'ы в другое место, не в начало памяти.
Готов пока пойти на первое, 64 прерывания за глаза хватит, но мне интересно, как в этих случаях поступают люди опытные.
В тех несчастных адресах с 0x0400 до 0x04FF, находятся полезные вещи: буфер клавиатуры, текущий режим и т. д. Есть, наверное, такие люди, кто всё это безжалостно затирает?