查看“CPU Registers x86”的源代码
←
CPU Registers x86
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
== 通用寄存器 == {| {{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 | BP | N/A | BPL | Stack Base Pointer堆栈基指针 |- |} == 指针寄存器 == {| {{wikitable}} |- ! 64-bit ! 32-bit ! 16-bit ! 描述 |- | RIP | EIP | IP | 指令指针 |- |} == 段寄存器 == {| {{wikitable}} |- ! 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寄存器 == {| {{wikitable}} |- ! 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==== {| {{wikitable}} |- ! 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指令访问 <source lang="asm"> ; First way: ; Write: mov cr0, reg ; Read: mov reg, cr0 ; ---------------------- ; Second way: ; Write: lmsw reg ; Read: smsw reg </source> ====CR1==== 保留,CPU在尝试访问时会抛出 # UD异常。 ====CR2==== {| {{wikitable}} |- ! Bit ! Label ! 描述 |- | 0-31 (63) | PFLA | Page Fault Linear Address 页面故障线性地址 |- |} ====CR3==== {| {{wikitable}} |- ! 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==== {| {{wikitable}} |- ! 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 Memory Protection|Supervisor Mode Execution Protection]] Enable |- | 21 | SMAP | [[Supervisor Memory Protection|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==== {| {{wikitable}} |- ! Bit ! Label ! 描述 |- | 0-3 | TPL | Task Priority Level 任务优先级别 |- |} ==Extended Control Registers 扩展控制寄存器== ====XCR0==== {| {{wikitable}} |- ! 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==== 它允许调试器确定发生了哪些调试条件。<br> 位0到3表示,在设置时,当生成调试异常时,它的相关断点条件已满足。<br> 位13指示指令流中的下一个指令访问调试寄存器之一。<br> 位14指示 (设置时) 调试异常是由单步执行模式触发的 (在eglags中使用TF位启用)。<br> 位15指示 (设置时) 调试指令是由任务切换产生的,其中设置了目标任务的TSS中的T标志。<br> 位16指示 (清除时) 调试异常或断点异常发生在RTM区域内。<br> ====DR7==== {| {{wikitable}} |- ! 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 |- |} 在硬件任务交换机上,本地断点位会停用,而全局则不会。<br> 条件00b表示执行中断,01b表示写观察点,11b表示R/W观察点。 10b保留用于I/O R/W (不支持)。 ==Test Registers 测试寄存器== {| {{wikitable}} |- ! Name ! 描述 |- | TR3 - TR5 | 无文档 |- | TR6 | Test command register 测试命令寄存器 |- | TR7 | Test data register 测试数据寄存器 |- |} ==Protected Mode Registers 保护模式寄存器== ====GDTR==== {| {{wikitable}} |- ! Nits ! Label ! 描述 |- | 0-15 | Limit | (Size of [[GDT]]) - 1 |- | 16-47 | Base | [[GDT]] 的起始地址 |- |} 存储 [[GDT]] 的分段选择器。 ====LDTR==== {| {{wikitable}} ! Bits ! Label ! 描述 |- | 0-15 | Limit | (Size of [[LDT]]) - 1 |- | 16-47 | Base | [[LDT]] 的起始地址 |- |} 存储 [[LDT]] 的分段选择器。 ====IDTR==== {| {{wikitable}} ! Bits ! Label ! 描述 |- | 0-15 | Limit | (Size of [[IDT]]) - 1 |- | 16-47 | Base | [[IDT]] 的起始地址 |- |} 存储 [[IDT]] 的分段选择器。 [[Category:CPU_Registers]]
本页使用的模板:
模板:Wikitable
(
查看源代码
)
返回至“
CPU Registers x86
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息