汇编 16位32位64位通用寄存器(逆向分析)

目录

[1. 16位模式(8086/8088 及 16 位 OS,如 DOS、早期 Windows)](#1. 16位模式(8086/8088 及 16 位 OS,如 DOS、早期 Windows))

[1.1 通用寄存器(GPR)](#1.1 通用寄存器(GPR))

[1.2 段寄存器](#1.2 段寄存器)

[1.3 标志寄存器(FLAGS,16位)](#1.3 标志寄存器(FLAGS,16位))

[2. 32位模式(80386+,32 位 OS 如 Win32、Linux i386)](#2. 32位模式(80386+,32 位 OS 如 Win32、Linux i386))

[2.1 通用寄存器(GPR)](#2.1 通用寄存器(GPR))

[2.2 段寄存器](#2.2 段寄存器)

[2.3 标志寄存器(EFLAGS,32位)](#2.3 标志寄存器(EFLAGS,32位))

[3. 64位模式(x86-64 / AMD64,64 位 OS 如 Win64、Linux x86_64)](#3. 64位模式(x86-64 / AMD64,64 位 OS 如 Win64、Linux x86_64))

[3.1 通用寄存器(GPR)](#3.1 通用寄存器(GPR))

[3.2 段寄存器](#3.2 段寄存器)

[3.3 标志寄存器(RFLAGS,64位)](#3.3 标志寄存器(RFLAGS,64位))


1. 16位模式(8086/8088 及 16 位 OS,如 DOS、早期 Windows)

1.1 通用寄存器(GPR)

|--------|-----|-----|------------------|
| 16位寄存器 | 高8位 | 低8位 | 主要用途 |
| AX | AH | AL | 累加器,最常用作运算和返回值 |
| BX | BH | BL | 基址寄存器,常用于内存寻址 |
| CX | CH | CL | 计数器,用于循环和移位 |
| DX | DH | DL | 数据寄存器,常用于乘除法和I/O |
| SI | - | - | 源索引(字符串操作) |
| DI | - | - | 目的索引(字符串操作) |
| BP | - | - | 基址指针(栈帧) |
| SP | - | - | 栈指针(栈顶) |

1.2 段寄存器
  • CS:代码段(Code Segment)

  • DS:数据段(Data Segment)

  • SS:栈段(Stack Segment)

  • ES:附加段(Extra Segment)

1.3 标志寄存器(FLAGS,16位)

|----|----|-----------------|--------|--------|
| 位 | 标志 | 名称 | 0 的含义 | 1 的含义 |
| 0 | CF | Carry Flag | 无进位 | 有进位 |
| 2 | PF | Parity Flag | 奇数个1 | 偶数个1 |
| 4 | AF | Auxiliary Carry | 低4位无进位 | 低4位有进位 |
| 6 | ZF | Zero Flag | 结果 ≠ 0 | 结果 = 0 |
| 7 | SF | Sign Flag | 非负 | 负数 |
| 8 | TF | Trap Flag | 正常执行 | 单步调试 |
| 9 | IF | Interrupt Flag | 禁止中断 | 允许中断 |
| 10 | DF | Direction Flag | 正向(递增) | 反向(递减) |
| 11 | OF | Overflow Flag | 无溢出 | 有符号溢出 |


2. 32位模式(80386+,32 位 OS 如 Win32、Linux i386)

2.1 通用寄存器(GPR)

|---------|------|-----|-----|-----------|
| 32位寄存器 | 低16位 | 高8位 | 低8位 | 主要用途 |
| EAX | AX | AH | AL | 累加器、函数返回值 |
| EBX | BX | BH | BL | 基址寄存器 |
| ECX | CX | CH | CL | 计数器 |
| EDX | DX | DH | DL | 数据寄存器 |
| ESI | SI | - | - | 源索引 |
| EDI | DI | - | - | 目的索引 |
| EBP | BP | - | - | 栈帧基址指针 |
| ESP | SP | - | - | 栈指针 |

2.2 段寄存器
  • CS:代码段

  • DS:数据段

  • SS:栈段

  • ES:附加段

  • FS:线程局部存储(TLS)

  • GS:线程局部存储(TLS)

2.3 标志寄存器(EFLAGS,32位)

低16位与16位 FLAGS 相同,主要标志位如下:

|-------|------|-----------------------|----------|
| 位 | 标志 | 名称 | 含义 |
| 0 | CF | Carry Flag | 进位标志 |
| 2 | PF | Parity Flag | 奇偶标志 |
| 4 | AF | Auxiliary Carry | 辅助进位 |
| 6 | ZF | Zero Flag | 零标志 |
| 7 | SF | Sign Flag | 符号标志 |
| 8 | TF | Trap Flag | 单步调试 |
| 9 | IF | Interrupt Enable Flag | 中断允许标志 |
| 10 | DF | Direction Flag | 方向标志 |
| 11 | OF | Overflow Flag | 溢出标志 |
| 12-13 | IOPL | I/O Privilege Level | I/O特权级 |
| 14 | NT | Nested Task Flag | 嵌套任务 |
| 16 | RF | Resume Flag | 调试恢复 |
| 17 | VM | Virtual-8086 Mode | 虚拟8086模式 |
| 18 | AC | Alignment Check | 对齐检查 |
| 21 | ID | Identification Flag | CPUID支持 |

3. 64位模式(x86-64 / AMD64,64 位 OS 如 Win64、Linux x86_64)

3.1 通用寄存器(GPR)

|---------|-------|-------|---------|---------|
| 64位寄存器 | 32位部分 | 16位部分 | 8位访问 | 主要用途 |
| RAX | EAX | AX | AL / AH | 累加器、返回值 |
| RBX | EBX | BX | BL / BH | 基址寄存器 |
| RCX | ECX | CX | CL / CH | 计数器 |
| RDX | EDX | DX | DL / DH | 数据寄存器 |
| RSI | ESI | SI | SIL | 源索引 |
| RDI | EDI | DI | DIL | 目的索引 |
| RBP | EBP | BP | BPL | 栈帧基址 |
| RSP | ESP | SP | SPL | 栈指针 |
| R8 | R8D | R8W | R8B | 通用 |
| R9 | R9D | R9W | R9B | 通用 |
| R10 | R10D | R10W | R10B | 通用 |
| R11 | R11D | R11W | R11B | 通用 |
| R12 | R12D | R12W | R12B | 通用 |
| R13 | R13D | R13W | R13B | 通用 |
| R14 | R14D | R14W | R14B | 通用 |
| R15 | R15D | R15W | R15B | 通用 |

3.2 段寄存器

|--------|-------------|
| 段寄存器 | 主要用途 |
| CS | 代码段 |
| DS | 数据段 |
| SS | 栈段 |
| ES | 附加段 |
| FS | 线程局部存储(TLS) |
| GS | 线程局部存储(TLS) |

说明:64位模式采用平坦内存模型,大多数段基址为0,仅 FS 和 GS 仍被广泛使用。

3.3 标志寄存器(RFLAGS,64位)
  • 低 32位:与32位 EFLAGS 完全一致。

  • 高32位:保留未使用。

主要标志位含义与32位模式相同(CF、ZF、SF、OF、DF、IF 等)。


整体总结对比

|-----|-------|------|--------------|----------|
| 模式 | 通用寄存器 | 段寄存器 | 标志寄存器 | 主要特点 |
| 16位 | 8个 | 4个 | FLAGS (16位) | 实模式 |
| 32位 | 8个 | 6个 | EFLAGS (32位) | 保护模式 |
| 64位 | 16个 | 6个 | RFLAGS (64位) | 平坦模型,长模式 |

相关推荐
Tronlong创龙3 小时前
SBC‑TLT153 嵌入式 Linux 应用开发,交叉编译与 GDB 调试实践(上)
嵌入式硬件·嵌入式开发·硬件开发·工业控制·工业开发板
巴渝小禹4 小时前
单片机死循环delay_us()计算方法
单片机·嵌入式硬件
Yiran_G4 小时前
LoRa串口模组和SoC模组怎么选?从MCU架构看无线通信方案设计
嵌入式硬件·物联网
HQB20265 小时前
CN6150|简芯维尔 6V/500mA 高速低噪声 CMOS‑LDO 线性稳压器
嵌入式硬件·硬件工程
科芯创展6 小时前
XZ3445 高集成升压/升降压DC-DC电源芯片技术解析
单片机·嵌入式硬件
艾芯微科技6 小时前
高充放电流锂电充放 SoC:ETA9885E10,便携储能、小移动电源 BOM 选型笔记
网络·单片机·嵌入式硬件·集成测试·51单片机
艾芯微科技6 小时前
钰泰 ETA6973PQ3Y|QFN3×3 2A 同步降压 Buck,I2C 可配置多档输出,动态调压 PMIC
网络·单片机·嵌入式硬件·fpga开发·集成测试·51单片机
Brilliantwxx7 小时前
【STM32】 通用定时器:输入捕获与输出比较详解 测脉宽、测频率
stm32·单片机·嵌入式硬件·mcu
意法半导体STM328 小时前
【官方原创】LAT1703 STM32C5 LL Cordic例程
stm32·单片机·嵌入式硬件·stm32c5·ll cordic