数据-存储单元
-
计算机存储单元
硬盘
内存
CPU(寄存器)
寄存器
-
寄存器是位于CPU内部 (每个CPU核心都有对应一套寄存器)
-
通用寄存器 - EAX EBX ECX EDX ESP EBP ESI EDI
ESP
(栈顶指针)EBP
(栈底指针) 用于维护线程栈区
-
段寄存器 - CS SS DS ES FS GS
-
指令指针寄存器 - EIP
-
标志寄存器 - EFLAGS
通用寄存器
-
通用寄存器(32)
寄存器 用途(通常) 编号 范围 EAX 累加器 乘除指令使用EAX 0 0x00000000 ~ 0xFFFFFFF ECX 循环计算器 1 0x00000000 ~ 0xFFFFFFF EDX I/O指针 2 0x00000000 ~ 0xFFFFFFF EBX DS段的数据指针 3 0x00000000 ~ 0xFFFFFFF ESP 堆栈指针指向线程栈顶 4 0x00000000 ~ 0xFFFFFFF EBP 堆栈知道执行线程栈底 5 0x00000000 ~ 0xFFFFFFF ESI 字符串操作源指针 6 0x00000000 ~ 0xFFFFFFF EDI 字符串操作目标指针 7 0x00000000 ~ 0xFFFFFFF 32Bit 16Bit 8Bit 8Bit EAX AX AH AL ECX CX CH CL EDX DX DH DL EBX BX BH BL ESP SP EBP BP ESI SI EDI DI
段寄存器
-
CPU - 保护模式
- 段的机制
- 页的机制
-
段寄存器 - CS SS DS ES FS GS
- CS - Code Segment
- SS - Stack Segment
- DS - Data Segment
- ES - Extend Segment
- FS - R3 - _TEB R0 - _KPCR
-
位宽
X86dbg
Visual Studio
-
Segment selector
-
(0 ~ 1)RPL / CPL
-
(2)TI
-
(3 ~ 15)INDEX
-
Segment Descriptor
- P
- DPL
- S
- TYPE
- LIMIT
- BASE
-
指令指针寄存器
- 指令指针寄存器 - EIP
- EIP寄存器当中存储的是下一条即将要执行的指令地址
标志寄存器
-
标志寄存器
-
EFLAG寄存器占4字节32位
-
由一堆标志位共同组成EFLAG寄存器且每个标志位占据一个二进位
-
-
标志位
Flags Virual Studio Index 含义 CF(Carry flag) CY(进位标志) 0 算数运算结果在最高有效位(MSB)发生进位或者借位是将其置1反之为0 该标志位也表示无符号整数运算发生溢出 PF(Parity) PE(奇偶标志) 2 运算结果的最低有效字节中1的个数为偶数则置1反之为0 AF(Auxiliary Carry flag) AC(辅助进位) 4 运算结果(03BIT)低四位向高四位发生进位或者借位时将其置1反之为0 ZF(Zero flag) ZR(零标志位) 5 运算结果为0则将其置1反之为0 SF(Sign flag) PL(符号标志) 7 运算结果的最高有效位 DF(Direction flag) UP(方向标志) 10 方向标志位控制了串操作指令 设置标志位将使得串操作指令地址自动递减(从高地址向低地址处理串) 清除标志位将使得串操作指令地址自动递增(从低地址向高地址处理串) OF(Overflow flag) OV(溢出标志) 11 该标志位表示有符号整数运算发生溢出 IOPL(I/0 Privilege Level) 12&13 当前运行任务的I/O特权级 NT(Nested Task) 14 控制寄存器对调试溢出的响应 RF(Resume flag) 16 控制寄存器对调试溢出的响应 VM(Virtual 8086 Mode) 17 此标志位为1表示为虚拟8086模拟反之为保护模式