reverseenengineering:регитсры:аппаратные_регистры

Аппаратные регистры для x86-64, RISC, CISC

Разберём основные аппаратные регистры для трёх архитектур:

  1. x86-64 (CISC, наиболее распространённая CISC-архитектура)
  2. Классическая RISC (пример: ARMv8-A/AArch64, MIPS)
  3. Классическая CISC (на примере x86-64, с комментариями по отличиям от RISC)
Категория Регистр Разрядность Назначение и особенности
Общего назначения RAX, RBX, RCX, RDX 64 Основные регистры (арифметика, универсальные)
Общего назначения RSI, RDI 64 Индексы для строковых операций, аргументы вызовов
Общего назначения RBP, RSP 64 Базовый и стековый указатели
Дополнительные R8–R15 64 Дополнительные универсальные регистры
Программный счётчик RIP 64 Адрес следующей инструкции
Флаги RFLAGS 64 Флаги процессора
Сегментные CS, DS, ES, SS, FS, GS 16 Сегментация памяти (редко используется в 64 бит)
Контроля CR0, CR2, CR3, CR4, CR8 64 Управление страницами и режимами процессора
SIMD/SSE XMM0–XMM15 128 SIMD/FPU операции
AVX YMM0–YMM15 256 Расширенные SIMD
AVX-512 ZMM0–ZMM31 512 Ещё шире SIMD
MMX/FPU ST(0)–ST(7), MM0–MM7 80/64 Стек FPU/MMX
  • Каждый RAX разбивается на EAX (32), AX (16), AL (8), AH (8 верхний байт), и аналоги для других регистров.

Категория Регистр Разрядность Назначение и особенности
Общего назначения X0–X30 64 31 регистр общего назначения (X30=LР)
Аргументы/возврат X0–X7 64 Аргументы функций, X0 — возврат из функции
Стековый SP 64 Stack Pointer
Программный счётчик PC 64 Program Counter
Флаги NZCV 4 Negative, Zero, Carry, Overflow
Системный PSTATE - Статус, управление привилегиями
SIMD/Vector V0–V31 128 Регистры для NEON/SIMD/FPU
Назначение Имя Описание
zero $zero Всегда 0
Аргументы $a0–$a3 Аргументы функций
Вызов $ra Return address
Счётчик $t0–$t9 Временные регистры
Сохранение $s0–$s7 Saved регистры
Стек $sp Stack pointer
Программный счётчик $pc Program counter

  • Современная CISC — см. x86-64 выше.
  • В старых CISC (VAX, 68000): используются спец. регистры управления/адресации, меньшее число GPR, возможность сложной адресации.
  • Пример: VAX-11 — регистры R0–R15, PSW (status), PC.

Архитектура Категория Имя регистра(-ов) Разрядность Кол-во Назначение, особенности
x86-64 Общие RAX…RDI, RBP, RSP 64 8 Универсальные, арифметика, стек
Дополнительные R8–R15 64 8 Универсальные
Программный счётчик RIP 64 1 IP (указатель команды)
Флаги RFLAGS 64 1 Флаги
Сегментные CS, DS, ES, SS, FS, GS 16 6 Сегмент. память
SIMD XMM0–XMM15, YMM*, ZMM* 128–512 16–32 Векторные регистры
FPU/MMX ST(0)–ST(7), MM0–7 80/64 8 FPU/MMX
ARMv8 Общие X0–X30 64 31 Универсальные (X30 — LR)
Стек SP 64 1 Stack Pointer
Программный счётчик PC 64 1 Program Counter
Флаги NZCV 4 1 набор Флаги состояния
SIMD/VFP V0–V31 128 32 Векторные регистры
MIPS Общие $0–$31 32/64 32 Универсальные (назначение по ABI)
Стек $sp 32/64 1 Stack Pointer
PC $pc 32/64 1 Program Counter
HI/LO hi, lo 32/64 2 Для умножения/деления

Особенность x86-64 (CISC) RISC (ARMv8, MIPS)
Количество GPR 16 (реальных) 31–32
Размер регистров 64 бит (есть 8/16/32 бита) 64 бит (обычно)
Специализация Некоторые спец. регистры Все практически общие
Адресация памяти Сложная, много режимов Простая
Указатель команд RIP PC

x86-64:

mov rax, rbx         ; Копировать rbx в rax
add rax, rcx         ; Сложение
mov [rsp+8], rax     ; Сохр. rax на стеке

ARMv8/AArch64:

MOV X0, X1           ; Копировать X1 в X0
ADD X0, X0, X2       ; Сложить X0 и X2, результат в X0
STR X0, [SP, #8]     ; Сохр. X0 по адресу SP+8

  • reverseenengineering/регитсры/аппаратные_регистры.txt
  • Последнее изменение: 2025/07/16 21:37
  • Lex