DRO
~ DR7
是调试寄存器. DRO
~ DR3
用于保存断点的线性地址. DR7
- 分别保存4个断点的中断条件. DR6
- 保存断点命中后的信息.
包含处理器的大量控制标志位. 下面列出常用的三种:
PE
- 是否启用保护模式,置1则启用
PG
- 是否使用分页模式, 置1则开启分页模式, 此标志置1时,PE
标志也必须置1,否则CPU报异常.
WP
- WP==1
时, 不能修改只读的内存页 , WP==0
时, 可以修改只读的内存页.
保留
专门用于保存缺页异常时的线性地址.
专门用于保存一个进程的页目录地址(此寄存器存储的是物理地址)
此寄存器的低12
位一般都设置为0 , 因为CR3
寄存器所保存的地址是一个页目录的地址,该地址必须在一个以分页粒度对其的地址上.
在使用非PAE
模式下的分页结构时, 指向PDT
基地址,线性地址是10-10-12
格式
使用PAE
模式的分页结构时, 指向 PDPT
基地址,线性地址是2-9-9-12
格式
提供了一些扩展的控制功能.
PAE
- PAE==1
表示使用物理地址扩展模式 , PAE==0
表示不使用物理地址扩展模式.
GDTR寄存器是48位的. 高32位保存GDT表的内存地址. 低16位保存的是GDT表的大小.
GDTR寄存器值得读写:
LGDT fword [地址] ; 将内存地址中存储的48位数据加载到GDTR寄存器总.高32位表示GDT表基地址,低16位表示大小
SGDT fword [地址] ; 将GDTR寄存器中的值存入到内存地址中.高32位表示GDT表基地址,低16位表示大小
全称为: 特殊模组寄存器组
这组寄存器它们没有名字, 只有编号, 它们保存了大量的信息. 这些信息可以通过两条指令和一个编号来读写:
RDMSR
- 读特殊寄存器的值 , 指令默认使用ecx
寄存器来保存要读取的MSR
寄存器的编号, 使用edx:eax
来保存读取结果.
WRMSR
- 写特殊寄存器 , 指令默认使用ecx
寄存器来保存要写入的MSR
寄存器的编号, 使用edx:eax
来保存要写入的值.
常见MSR
编号(其余见Intel手册第三卷第35章)
原文:https://www.cnblogs.com/ltyandy/p/11418361.html