reverseenengineering:регитсры

Это старая версия документа!


Регистры

Регистр процессора — поле заданной длины во внутрипроцессорной сверхбыстрой оперативной памяти (СОЗУ). Используется самим процессором, может быть как доступным, так и не доступным программно. Например, при выборке из памяти очередной команды она помещается в регистр команд, обращение к которому программист прописать не может.
Программно недоступные регистры: Программно недоступные регистры — любые процессорные регистры, к которым невозможно так или иначе обратиться из выполняемой программы. Пример таких регистров — это регистр команд.
Регистр команд (англ. instruction register — IR) — часть блока управления центрального процессора, содержащая инструкцию, которая выполняется в настоящий момент, или декодированную. Регистр команд — это регистр управляющего устройства компьютера. Он предназначен для хранения кода команды на период времени, который необходим для ее выполнения. Только разряд командного регистра используется для хранения кода операции: в остальных разрядах хранятся коды адресов операндов.
Программно доступные регистры есть те, к которым возможно так или иначе обратиться из выполняемой программы. Практически каждый такой регистр обозначается своим именем-идентификатором на уровне языка ассемблера и соответствующим числовым кодом-идентификатором на уровне машинного языка.
По уровню доступности программно доступные регистры неодинаковы и практически делятся на две большие подгруппы:
Системные регистры — любые регистры, программно доступные только системным программам (например, ядру операционной системы), имеющим достаточный для этого уровень системных привилегий/прав. В терминах многих машинных систем такой уровень привилегий часто называется «уровнем/режимом ядра» или «режимом супервизора».
Регистры общего назначения (РОН) — регистры, доступные любым программам. В частности, регистры, используемые без ограничения в арифметических и логических операциях, но имеющие определённые аппаратные ограничения (например, в строковых РОН). Эти регистры не характерны для эпохи мейнфреймов типа IBM/370 и стали популярными в микропроцессорах архитектуры X86 — Intel 8085, Intel 8086 и последующих.
Одним из ключевых элементов архитектуры процессора являются регистры. Эти быстрые ячейки памяти, расположенные непосредственно в процессоре, играют критическую роль в выполнении программ. В этой статье мы рассмотрим:
Общие регистры.
Такие как EAX, EBX, ECX, EDX, ESP, EBP, ESI и EDI которые используются для хранения данных и выполнения операций.
Сегментные регистры.
Регистры CS, DS, SS, ES, FS, GS – управляют доступом к различным сегментам памяти.
Регистры управления и состояния.
Регистры EIP и EFLAGS, которые отслеживают и управляют потоком выполнения и состоянием процессора.
С появлением архитектуры x86-64 регистры получили свои 64-битные аналоги: RAX, RBX, RCX, RDX, RSP, RBP, RSI и RDI. Расширение до 64 бит позволило увеличить объем данных, с которыми можно работать, и улучшить производительность в современных вычислительных задачах. Кроме того, в x86-64 добавлены новые регистры, такие как R8-R15, что предоставляет дополнительные возможности для оптимизации и параллельной обработки данных.
Понимание и эффективное использование этих регистров — это один из важных навыков в реверс-инжиниринге.
Шестнадцать 64-разрядных регистров RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, R8, R9, R10, R11, R12, R13, R14 и R15
Шестнадцать 32-разрядных регистров EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, R8D, R9D, R10D, R11D, R12D, R13D, R14D и R15D
Шестнадцать 16-разрядных регистров AX, BX, CX, DX, SI, DI, BP, SP, R8W, R9W, R10W, R11W, R12W, R13W, R14W и R15W
Шестнадцать 8-разрядных регистров AL, AH, BL, BH, CL, CH, DL, DH, DIL, SIL, BPL, SPL, R8B, R9B, R10B, R11B, R12B, R13B, R14B и R15B
Имя регистра Описание:Обозначение Назначение
EAX Аккумулятор (Accumulator) Арифметические и логические операций.
EBX База (Base) Применяется как указатель на данные. Используется для хранения данных и может использоваться как базовый регистр при адресации памяти.
ECX Счётчик (Counter) Хранение счетчика цикла. Используется в операциях цикла и как счетчик в командах REP и LOOP.
EDX Регистр данных (Data) Арифметические операции и операций ввода-вывода
EAX (extended accumulator register). Часто используется для операций ввода-вывода, арифметических вычислений и хранения возвращаемых значений функций.
Имя регистра Описание:Обозначение Назначение
ESP Указатель стека (Stack pointer) Указатель на верхушку стека. Указывает на последний аргумент стека.
EBP Указатель базы (Base pointer) Указатель на базу стека внутри функции. Ссылка на аргумент локальной переменной.
ESI Индекс источника (Source index) Указатель на источник при операциях с массивом. Исполняет в инструкции по перемодуляции памяти.
EDI Индекс приёмника (Destination index) Указатель на место назначения в операциях с массивами. Исполняет в инструкции по перемодуляции памяти.
FLAGS,EFLAGS,RFLAGS Регистр флагов (Flag) Содержит биты состояния процессора
EIP Указатель команд. Указатель адреса следующей инструкции для выполнения. Не регистр а указатель на текущую функцию.
СS Хранение базовых адресов (Code Segment) Хранение базовых адресов сегмента кода в ОЗУ, откуда процессор считывает команды для выполнения. Если проводить аналогию между кодом и книгой, то CS указывает на номер страницы в книге (программе)
DS (Data Segment Register)
ES (Extra Segment Register)
FS (Additional Segment Registers)
GS (Additional Segment Registers)
SS (Stack Segment Register)
RAX (Accumulator Register) Арифметические, логические операций и операций ввода-вывода.
RBX (Base Register) Хранение данных и иногда используется как базовый регистр при адресации памяти.
AX
AH
AL
B, BH, BL
SP, BP, SI, DI
SPL, SDL, SIL, DIL
RxD, RxW, RxB
A
B,C,D,E,H,L
DC
SP
LDA
Бит Имя Назначение
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. Эта инструкция возвращает идентификатор процессора и информацию о его функциях.
  • reverseenengineering/регитсры.1751365690.txt.gz
  • Последнее изменение: 2025/07/01 17:28
  • Lex