Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
В оставшейся части этой главы описывается организация памяти и адресного пространства.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
27.27 Кб
Скачать

3.3.6 Расширенная физическая адресация в защищенном режиме

Начиная с процессоров семейства P6, архитектура IA-32 поддерживает адресацию физической памяти до 64 Гбайт (236 байт). Программа или задача не могли напрямую адресовать адреса в этом адресном пространстве. Вместо этого он обращается к отдельным линейным адресным пространствам до 4 ГБ, которые сопоставляются с физическим адресным пространством на 64 Гбайт через механизм управления виртуальной памятью. Используя этот механизм, операционная система может включить программу для переключения линейных адресных пространств 4-гигабайта в физическое адресное пространство 64 ГБ.

Использование расширенной физической адресации требует, чтобы процессор работал в защищенном режиме, а операционная система обеспечивала систему управления виртуальной памятью. См. «36-битная физическая адресация с использованием механизма подкачки PAE» в главе 3 «Управление памятью с защищенным режимом» в Руководстве разработчика программного обеспечения Intel® 64 и IA-32, том 3A.

3.3.7 Расчет адресов в 64-битном режиме

В большинстве случаев 64-разрядный режим использует плоское адресное пространство для кода, данных и стеков. В 64-битном режиме (при отсутствии переопределения размера адреса) размер эффективных вычислений адресов составляет 64 бита. Расчет эффективного адреса использует 64-разрядные базовые и индексные регистры и смещения с расширением знака до 64 бит.

В плоском адресном пространстве 64-битного режима линейные адреса равны эффективным адресам, так как базовый адрес равен нулю. Если сегменты FS или GS используются с ненулевой базой, это правило не выполняется. В 64-битном режиме добавляются эффективные компоненты адреса, а эффективный адрес усекается (см., Например, инструкцию LEA) перед добавлением полной базы 64-битного сегмента. База никогда не усекается, независимо от режима адресации в 64-битном режиме.

Указатель команд расширяется до 64 бит для поддержки смещения 64-битного кода. 64-разрядный указатель инструкции называется RIP. В таблице 3-1 показана взаимосвязь между RIP, EIP и IP.

Таблица 3-1. Размеры указателя команд

Биты 63:32

Биты 31:16

Биты 15:0

16-битный указатель команд

Не изменено

IP

32-битный указатель команд

Нулевое расширение

EIP

64-битный указатель команд

RIP

Как правило, перемещения и немедленные действия в 64-битном режиме не распространяются на 64 бита. Они по-прежнему ограничены 32 битами и расширенными знаками при вычислении эффективных адресов. Однако в 64-битном режиме поддерживается поддержка 64-битного смещения и немедленных форм инструкции MOV.

Все 16-битные и 32-разрядные вычисления адресов в режиме IA-32e с нулевым расширением для формирования 64-разрядных адресов. Вычисления адресов сначала усекаются до эффективного размера адреса текущего режима (режим 64-бит или режим совместимости), как переопределенный любым префиксом размера адреса. Затем результат будет равен нулю - до полной ширины 64-битного адреса. Из-за этого 16-разрядные и 32-разрядные приложения, работающие в режиме совместимости, могут получить доступ только к низким 4 ГБ эффективных адресов с 64-битным режимом. Аналогично, 32-разрядный адрес, сгенерированный в 64-битном режиме, может получить доступ только к низким 4 ГБ эффективных адресов 64-битного режима.