汇编 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位) | 平坦模型,长模式 |

相关推荐
潜创微科技8 小时前
IT68353:双 DP1.4a+HDMI2.0 转 HDMI2.0 单芯片 KVM 切换方案
嵌入式硬件·音视频
踏着七彩祥云的小丑9 小时前
嵌入式测试学习第 17 天:常见接口:USB、Type-C、排针
单片机·嵌入式硬件
szxinmai主板定制专家9 小时前
电力设备RK3568/RK3576+FPGA,多系统混合部署Linux+RTOS RT-THREAD,强实时性
linux·运维·服务器·人工智能·嵌入式硬件·fpga开发
qq_3692243310 小时前
Windows系统缺失ddraw.dll文件?游戏闪退、图形报错原因详解及处理办法
windows·游戏·dll·dll修复·dll丢失·dll错误
林下溪畔10 小时前
部署claude code(Windows版)
windows
振南的单片机世界11 小时前
EXTI边沿触发:按键一按就通知CPU,不用轮询
stm32·单片机·嵌入式硬件
jllllyuz11 小时前
STM32 BMP280 I2C通信驱动程序
stm32·单片机·嵌入式硬件
优信电子11 小时前
基于STM32F103C8T6单片机驱动ACS712模块进行电流检测
stm32·单片机·嵌入式硬件·嵌入式·电流检测·acs712·电流采集
J&A~ing11 小时前
第一章 opencv 的 Windows源码在 Visual Studio 下的编译安装
人工智能·windows·opencv·计算机视觉·visual studio