Регистры
Запись в часть 64-битного регистра, например в регистр AL, влияет только на биты этой части. В случае AL загрузка 8-битного значения изменяет младшие 8 битов RAX, оставляя остальные 48 бит без изменений.
Виды регистров
| Название | Разряд | Тип | Назначение |
|
RAX EAX AX AH, AL |
64 32 16 8 |
Универсальный | (Accumulator): для арифметических операций |
|
RBX EBX BX BH, BL |
64 32 16 8 |
Универсальный | (Base pointer): указатель на базу стека внутри функции |
|
RCX ECX CX CH, CL |
64 32 16 8 |
Универсальный | (Counter): для хранения счетчика цикла |
|
RDX EDX DX DH, DL |
64 32 16 8 |
Универсальный | (Data): для арифметических операций и операций ввода-вывода |
|
R8-R15 R8D-R15D R8W-R15W R8B-R15B |
64 32 16 8 |
Универсальный | 8 универсальных регистров |
|
RSP ESP SP |
64 32 16 |
Указатели | (Stack pointer): указатель на верхушку стека |
|
RBP EBP BP |
64 32 16 |
Указатели | (Base pointer): указатель на базу стека внутри функции |
|
RSI ESI SI |
64 32 16 |
Индексы |
(Source index): указатель на источник при операциях с массивом |
RDI EDI DI |
64 32 16 |
Индексы | (Destination index): указатель на место назначения в операциях с массивами |
|
RFLAGS |
|
Флаги | Биты состояния процессора после предыдущей операции |
|
EIP |
32 |
||
ST0 - ST7 |
80 |
Специальные | Регистры для работы с числами с плавающей точкой |
|
YMM0-YMM15 XMM0 - XMM15 |
256
128 |
Каждый регистр можно настроить как четыре 32-битных регистра с плавающей точкой; два 64-битных регистра двойной точности с плавающей точкой; или шестнадцать 8-битных, восемь 16-битных, четыре 32-битных, два 64-битных или один 128-битный целочисленный регистр. |
Регистр флагов RFLAGS:
|
Бит |
Имя |
назначение |
|
0 |
CF |
Флаг переноса (Carry flag):казывает, был ли при сложении перенос или заимствование при вычитании. Используется в качестве входных данных для инструкций сложения и вычитания. |
|
2 |
PF |
Флаг четности: устанавливается, если младшие 8 битов результата содержат четное число единиц. |
|
4 |
AF |
Флаг настройки: указывает, был ли при сложении перенос или заимствование при вычитании младших 4 битов. |
|
6 |
ZF |
Флаг нуля (Zero flag): устанавливается, если результат операции равен нулю |
|
7 |
SF |
Флаг знака (Sign flag): устанавливается, если результат операции отрицательный. |
|
8 |
TF |
Флаг прерывания выполнения (Trap flag): используется при одношаговой отладке. |
|
|
9 |
IF |
Флаг разрешения прерывания: установка этого бита разрешает аппаратные прерывания. |
|
|
10 |
DF |
Флаг направления: контролирует направление обработки. Если не установлен, то порядок от самого младшего до самого старшего адреса. Если установлен, то порядок обратный - от самого старшего до самого младшего адреса. |
|
|
11 |
OF |
Флаг переполнения (Overflow flag): если устанавлен, то операция привела к переполнению со знаком. |
|
|
12-13 |
IOPL |
Уровень привилегий ввода-вывода (I/O privilege level): уровень привилегий текущего выполняемого потока. IOPL 0 — это режим ядра, а 3 — пользовательский режим. |
|
|
14 |
NT |
Флаг вложенной задачи (Nested task flag): управляет цепочкой прерываний. |
|
|
16 |
RF |
Флаг возобновления (Resume flag): используется для обработки исключений во время отладки. |
|
|
17 |
VM |
Флаг режима виртуальной машины 8086: если установлен, режим совместимости с 8086 активен. Этот режим позволяет запускать некоторые приложения MS-DOS в контексте операционной системы в защищенном режиме. |
|
|
18 |
AC |
Флаг проверки выравнивания (Alignment check flag): если установлен, проверка выравнивания памяти активна. Например, если установлен флаг AC, сохранение 16-битного значения по нечетному адресу вызывает исключение проверки выравнивания. Процессоры x86 могут выполнять невыровненный доступ к памяти, когда этот флаг не установлен, но количество требуемых командных циклов может увеличиться. |
|
|
19 |
VIF |
Флаг виртуального прерывания (Virtual interrupt flag): виртуальная версия флага IF в виртуальном режиме 8086.. |
|
|
20 |
VIP |
Флаг ожидания виртуального прерывания: Устанавливается, когда прерывание находится в состоянии ожидания в виртуальном режиме 8086. |
|
|
21 |
ID |
Флаг ID: если этот бит установлен, то поддерживается инструкция cpuid. Эта инструкция возвращает идентификатор процессора и информацию о его функциях. |