# #x86 #x86-64 #32bit-64bit #osdev #ioports
Вопрос:
Да, x86-это 32-разрядная версия. Написал небольшое ядро для ввода-вывода VGA, ввода-вывода клавиатуры и ввода-вывода мыши. Но x86_64-это 64-разрядная версия. Основное отличие состоит в том, что регистры расширены до 64 бит, и их больше. Набор инструкций x86_64 содержит еще несколько инструкций наряду с x86. Но вот в чем дело — карта памяти такая же, как x86? Если нет, могу ли я получить спецификации?
Комментарии:
1. Вы имеете в виду физическую память, например, где находятся регистры MMIO, и какие области поддерживаются DRAM или ничем? Это одно и то же в любой данной системе, независимо от того, в какой режим вы переключаете одно из ядер процессора. Но это может варьироваться в разных системах, поэтому вам следует спросить в BIOS, где что находится.
2. И кстати, x86-64 в 64-разрядном режиме содержит меньше инструкций, чем в режимах совместимости или устаревших. Инструкции, такие как
aam
иlds
были удалены для x86-64, освободив их коды операций. Количество новых 64-разрядных мнемоник инструкций, подобныхmovsxd
иcqo
, я думаю, меньше, чем количество удаленных инструкций, независимо от того, считаете ли вы мнемонику или коды операций. (Если вы считаете разные формы инструкций, напримерpopcnt r64
, как отдельные отpopcnt r32
дифференцированных по префиксу REX, то да, в длинном режиме их гораздо больше). В противном случае большинство расширений добавили инструкции, которые работают в обоих режимах.3. Эти штуки жестко подключены за пределами центрального процессора. Они не зависят от режима работы процессора.
4. Адресное пространство ввода-вывода-это не память, это пространство ввода-вывода. Вот почему вы должны использовать «адрес» со специальными инструкциями (
in
/out
, неmov
). И да, устройствам все равно, в каком режиме находится процессор, когда он выполняетсяin
/out
. Устаревший порт ввода-вывода IBM-PC исправлен для обратной совместимости. На современных устройствах PCI вы запрашиваете устройство PCI, чтобы узнать, где PCI autoconfig размещает свои порты ввода-вывода.5. Что касается памяти устройства, такой как VGA, да, это часть физического адресного пространства, так что да, вам нужно сопоставить его с виртуальным адресом с таблицами страниц. (длительный режим требует подкачки). Но физический адрес также не зависит от режима процессора, и, опять же, устаревшие материалы IBM-PC / VGA находятся в фиксированных местах, если только вы не напишете графические драйверы для конкретного оборудования, которое у вас действительно есть, и в этом случае после переключения режима вы будете знать, куда вы сказали ему поместить буфер кадров.