Является ли карта памяти x86_64 такой же, как у x86?

# #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 находятся в фиксированных местах, если только вы не напишете графические драйверы для конкретного оборудования, которое у вас действительно есть, и в этом случае после переключения режима вы будете знать, куда вы сказали ему поместить буфер кадров.