64-битный режим (64-bit mode)
64-битный режим (64-bit mode) — подрежим длинного режима (Long Mode), который позволяет запускать приложения в 64-битной операционной системе, написанные для доступа к 64-битному линейному адресному пространству. В данном режиме увеличивается количество регистров общего назначения (R8–R15) и регистров SSE (YMM/XMM8–15) с 8 до 16. Регистры общего назначения расширены до 64 бит. В этом режиме также вводится новый префикс кода операции (REX) для доступа к расширениям регистров. Префиксы инструкций REX также предоставляют возможность управлять младшим байтом любого из шестнадцати регистров общего назначения. В результате получается единый набор регистров байтов, слов, двойных и четверных слов.
64-битный режим включается операционной системой на основе сегмента кода. В этом режиме размер адреса по умолчанию составляет 64 бита, а размер операнда по умолчанию — 32 бита. Размер операнда по умолчанию может быть переопределен для каждой инструкции с использованием префикса кода операции REX в сочетании с префиксом переопределения размера операнда. Префиксы REX позволяют указать 64-битный операнд при работе в 64-битном режиме. С помощью этого механизма многие существующие инструкции были расширены, чтобы разрешить использование 64-битных регистров и 64-битных адресов. По своему принципу работы он сходен с защищённым режимом, за исключением нескольких аспектов. В этом режиме можно получить доступ к 252 байтам физической памяти и к 248 байтам виртуальной памяти. В 64-разрядный режим можно перейти только из защищённого режима. В этом режиме «родной» для процессора размер данных - это 4 байта или двойное слово (DWORD), но можно оперировать данными размером в 8 байт. Размер адреса всегда 8 байтовый.
Поскольку 64-битный режим поддерживает 64-разрядное пространство виртуальных адресов, для него требуются 64-разрядная операционная система и набор инструментов. Существующие двоичные файлы приложений могут работать без перекомпиляции в режиме совместимости (Compatibility mode) под операционной системой, работающей в 64-разрядном режиме, или же приложения могут быть перекомпилированы для работы в 64-разрядном режиме.
Функции адресации включают 64-битный указатель инструкций (RIP) и режим RIP-relative addressing (адресация данных, кода, стека относительно регистра RIP). Этот режим подходит для современных операционных систем, поддерживая только плоское адресное пространство с единым кодом, данными и пространством стека. Устаревшая архитектура x86 поддерживает IP-относительную адресацию данных только в инструкциях по передаче управления. RIP-относительная адресация данных в отличии от абсолютной повышает эффективность позиционно-независимого кода и кода, адресующего глобальные данные.