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

3.4.1.1 Регистры общего назначения в 64-битном режиме

В 64-битном режиме имеется 16 регистров общего назначения, а размер операнда по умолчанию - 32 бита. Однако регистры общего назначения могут работать либо с 32-битными, либо с 64-битными операндами. Если указан размер 32-разрядного операнда: доступны EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, R8D-R15D. Если указан размер 64-разрядного операнда: доступны RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8-R15. R8D-R15D / R8-R15 представляют восемь новых регистров общего назначения. Доступ к этим регистрам можно получить на уровне байта, слова, слова и уровня qword. Префиксы REX используются для генерации 64-разрядных операндов или для ссылок на регистры R8-R15.

Регистры, доступные только в 64-битном режиме (R8-R15 и XMM8-XMM15), сохраняются на переходах из 64-разрядного режима в режим совместимости, а затем обратно в 64-разрядный режим. Однако значения R8-R15 и XMM8-XMM15 не определены после переходов из 64-битного режима через режим совместимости в прежний или реальный режим, а затем обратно через режим совместимости в 64-разрядный режим.

Таблица 3-2. Адресные регистры общего назначения

Тип регистра

Without Rex

With REX

Byte register

AL, BL, CL, DL, AH, BH, CH, DH

AL, BL, CL, DL, DIL, SIL, BPL, SPL, R8L - R15L

Word register

AX, BX, CX, DX, DI, SI, BP, SP

AX, BX, CX, DX, DI, SI, BP, SP, R8W - R15W

Doubleword register

EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP

EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, R8D - R15D

Quadword register

N.A.

RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8 - R15

В 64-битном режиме существуют ограничения на доступ к байтовым регистрам. Инструкция не может ссылаться на устаревшие высокие байты (например: AH, BH, CH, DH) и один из новых байтовых регистров одновременно (например: младший байт регистра RAX). Однако инструкции могут ссылаться на старые байты с низким байтом (например: AL, BL, CL или DL) и новые байтовые регистры одновременно (например: младший байт регистра R8 или RBP). Архитектура применяет это ограничение, изменяя высокобайтовые ссылки (AH, BH, CH, DH) на ссылки с низким байтом (BPL, SPL, DIL, SIL: низкие 8 бит для RBP, RSP, RDI и RSI) для инструкций с использованием Префикс REX.

Когда в 64-битном режиме размер операнда определяет количество действительных битов в целевом регистре общего назначения:

• 64-разрядные операнды генерируют 64-битный результат в целевом регистре общего назначения.

• 32-разрядные операнды генерируют 32-битный результат с нулевым расширением до 64-битного результата в целевом регистре общего назначения.

• 8-битные и 16-разрядные операнды генерируют 8-битный или 16-разрядный результат. Верхние 56 бит или 48 бит (соответственно) целевого регистра назначения не изменяются операцией. Если результат 8-разрядной или 16-разрядной операции предназначен для вычисления 64-разрядного адреса, явным образом выставляю регистр до полного 64-битного.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]