CPU Registers x86

来自osdev
Zhang3讨论 | 贡献2021年12月23日 (四) 09:14的版本 (创建页面,内容为“== 通用寄存器 == {| {{wikitable}} |- ! 64-bit ! 32-bit ! 16-bit ! 8 high bits ! 8 low bits ! 描述 |- | RAX | EAX | AX | AH | AL | Accumulator累加器 |- | RBX | EBX | BX | BH | BL | Base |- | RCX | ECX | CX | CH | CL | Counter计数器 |- | RDX | EDX | DX | DH | DL | Data数据 |- | RSI | ESI | SI | N/A | SIL | Source来源 |- | RDI | EDI | DI | N/A | DIL | Destination目标 |- | RSP | ESP | SP | N/A | SPL | Stack Pointer堆栈指针 |- | RBP | EBP | B…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

通用寄存器

64-bit 32-bit 16-bit 8 high bits 8 low bits 描述
RAX EAX AX AH AL Accumulator累加器
RBX EBX BX BH BL Base
RCX ECX CX CH CL Counter计数器
RDX EDX DX DH DL Data数据
RSI ESI SI N/A SIL Source来源
RDI EDI DI N/A DIL Destination目标
RSP ESP SP N/A SPL Stack Pointer堆栈指针
RBP EBP BP N/A BPL Stack Base Pointer堆栈基指针

指针寄存器

64-bit 32-bit 16-bit 描述
RIP EIP IP 指令指针

段寄存器

16-bit 描述
CS 代码段
DS Code Segment数据段
ES Extra Segment额外段
SS Stack Segment堆栈段
FS General Purpose F Segment通用F段
GS General Purpose G Segment通用G段

EFLAGS寄存器

Bit Label 描述
0 CF Carry flag携带标志
2 PF Parity flag奇偶标志
4 AF Auxiliary flag辅助标志
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 虚拟8086模式标志
18 AC Alignment check 对齐检查
19 VIF Virtual interrupt flag 虚拟中断标志
20 VIP Virtual interrupt pending 虚拟中断待处理
21 ID Able to use CPUID instruction 能够使用CPUID指令

未列出的位被保留。

Control Registers 控制寄存器

CR0

Bit Label 描述
0 PE Protected Mode Enable 保护模式启用
1 MP Monitor co-processor 监控协处理器
2 EM x87 FPU仿真
3 TS Task switched 任务切换
4 ET Extension type 扩展类型
5 NE Numeric error 数字错误
16 WP Write protect 写保护
18 AM Alignment mask 对齐掩码
29 NW Not-write through 未写入
30 CD Cache disable 缓存禁用
31 PG Paging 分页

注意: 该寄存器是唯一可以通过两种方式写入和读取的控制寄存器,而其他方式只能通过MOV指令访问

; First way:
; Write:
mov cr0, reg

; Read:
mov reg, cr0
; ----------------------
; Second way:
; Write:
lmsw reg

; Read:
smsw reg

CR1

保留,CPU在尝试访问时会抛出 # UD异常。

CR2

Bit Label 描述
0-31 (63) PFLA Page Fault Linear Address 页面故障线性地址

CR3

Bit Label 描述 PAE Long Mode
3 PWT Page-level Write-Through (Not used) (Not used if bit 17 of CR4 is 1)
4 PCD Page-level Cache Disable (Not used) (Not used if bit 17 of CR4 is 1)
12-31 (63) PDBR Page Directory Base Register Base of PDPT Base of PML4T/PML5T

假定物理基址的位0-11为0。 CR3的位3和4仅在没有PAE的情况下访问32位分页中的PDE时使用。

CR4

Bit Label 描述
0 VME Virtual 8086 Mode Extensions 虚拟8086模式扩展
1 PVI Protected-mode Virtual Interrupts 保护模式虚拟中断
2 TSD Time Stamp Disable 时间戳禁用
3 DE Debugging Extensions 调试扩展
4 PSE Page Size Extension 页面大小扩展
5 PAE Physical Address Extension 物理地址扩展
6 MCE Machine Check Exception 机器检查异常
7 PGE Page Global Enabled 页面全局启用
8 PCE Performance-Monitoring Counter enable 性能-监控计数器启用
9 OSFXSR Operating system support for FXSAVE and FXRSTOR instructions 操作系统对FXSAVE和FXRSTOR指令的支持
10 OSXMMEXCPT Operating System Support for Unmasked SIMD Floating-Point Exceptions 操作系统对未屏蔽的SIMD浮点异常的支持
11 UMIP User-Mode Instruction Prevention (if set, #GP on SGDT, SIDT, SLDT, SMSW, and STR instructions when CPL > 0)
13 VMXE Virtual Machine Extensions Enable 虚拟机扩展启用
14 SMXE Safer Mode Extensions Enable
16 FSGSBASE Enables the instructions RDFSBASE, RDGSBASE, WRFSBASE, and WRGSBASE
17 PCIDE PCID Enable
18 OSXSAVE XSAVE and Processor Extended States Enable
20 SMEP Supervisor Mode Execution Protection Enable
21 SMAP Supervisor Mode Access Prevention Enable
22 PKE Protection Key Enable
23 CET Control-flow Enforcement Technology
24 PKS Enable Protection Keys for Supervisor-Mode Pages

CR5 - CR7

保留,与cr1相同的情况。

CR8

Bit Label 描述
0-3 TPL Task Priority Level 任务优先级别

Extended Control Registers 扩展控制寄存器

XCR0

Bit Label Description
0 X87 x87 FPU/MMX support (must be 1)
1 SSE XSAVE support for MXCSR and XMM registers
2 AVX AVX enabled and XSAVE support for upper halves of YMM registers
3 BNDREG MPX enabled and XSAVE support for BND0-BND3 registers
4 BNDCSR MPX enabled and XSAVE support for BNDCFGU and BNDSTATUS registers
5 opmask AVX-512 enabled and XSAVE support for opmask registers k0-k7
6 ZMM_Hi256 AVX-512 enabled and XSAVE support for upper halves of lower ZMM registers
7 Hi16_ZMM AVX-512 enabled and XSAVE support for upper ZMM registers
9 PKRU XSAVE support for PKRU register

XCR0 can only be accessed if bit 18 of CR4 is set to 1. XGETBV and XSETBV instructions are used to access XCR0.

Debug Registers 调试寄存器

DR0 - DR3

包含最多4个断点的线性地址。 如果启用了分页,则将它们转换为物理地址。

DR6

它允许调试器确定发生了哪些调试条件。
位0到3表示,在设置时,当生成调试异常时,它的相关断点条件已满足。
位13指示指令流中的下一个指令访问调试寄存器之一。
位14指示 (设置时) 调试异常是由单步执行模式触发的 (在eglags中使用TF位启用)。
位15指示 (设置时) 调试指令是由任务切换产生的,其中设置了目标任务的TSS中的T标志。
位16指示 (清除时) 调试异常或断点异常发生在RTM区域内。

DR7

Bit Description
0 Local DR0 breakpoint
1 Global DR0 breakpoint
2 Local DR1 breakpoint
3 Global DR1 breakpoint
4 Local DR2 breakpoint
5 Global DR2 breakpoint
6 Local DR3 breakpoint
7 Global DR3 breakpoint
16-17 Conditions for DR0
18-19 Size of DR0 breakpoint
20-21 Conditions for DR1
22-23 Size of DR1 breakpoint
24-25 Conditions for DR2
26-27 Size of DR2 breakpoint
28-29 Conditions for DR3
30-31 Size of DR3 breakpoint

在硬件任务交换机上,本地断点位会停用,而全局则不会。
条件00b表示执行中断,01b表示写观察点,11b表示R/W观察点。 10b保留用于I/O R/W (不支持)。

Test Registers 测试寄存器

Name 描述
TR3 - TR5 无文档
TR6 Test command register 测试命令寄存器
TR7 Test data register 测试数据寄存器

Protected Mode Registers 保护模式寄存器

GDTR

Nits Label 描述
0-15 Limit (Size of GDT) - 1
16-47 Base GDT 的起始地址

存储 GDT 的分段选择器。

LDTR

Bits Label 描述
0-15 Limit (Size of LDT) - 1
16-47 Base LDT 的起始地址

存储 LDT 的分段选择器。

IDTR

Bits Label 描述
0-15 Limit (Size of IDT) - 1
16-47 Base IDT 的起始地址

存储 IDT 的分段选择器。