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

相关推荐
百事牛科技11 小时前
Excel的三种密码:防看、防存、防乱改,各管各的
windows·excel
倔强的胡萝卜12 小时前
基于STM32F103C8T6的温度报警器设计
stm32·单片机·嵌入式硬件
缘来是你远去是我13 小时前
ZYNQ 系列芯片中断机制详解:类型、处理过程与中断处理函数
单片机·嵌入式硬件
Zw-awa13 小时前
两根线怎么挂住一堆设备:I2C 协议原理
stm32
LCG米14 小时前
STM32 定时器主从模式输出精确脉冲数实测:TRGO 触发链拆解、多发一脉冲根因与干净停止时序落地
stm32·单片机·嵌入式硬件·嵌入式
青梅味猪大肠15 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
FakeOccupational15 小时前
【电路笔记 STM32】RTC配置:晶振选择+闹钟Configuration+中断设置
笔记·stm32·实时音视频
ChaseVLSI15 小时前
FPGA与ASIC的区别详解:内部结构、开发成本与适用场景,项目选型到底该选哪个
嵌入式硬件·fpga开发·硬件架构·硬件工程
东莞市壹星自动化设备有限公司15 小时前
透明圆瓶内部特征怎样定位:折射追踪与近远相位分支
嵌入式硬件·自动化·需求分析·几何学·骨骼绑定
Dev_XH15 小时前
【成品设计】基于物联网的配电箱智能防护系统设计
stm32·单片机·嵌入式硬件·物联网