关键寄存器备忘录

gs 寄存器

fs寄存器在x64下变为gs寄存器
R3下gs存放的是TEB
R0下存放的是KPCR(记录每个CPU的状态,结构体中存储了GDT,IDT等重要的信息),

MSR 寄存器

MSR 总体来是为了设置CPU 的工作环境和标示CPU 的工作状态,包括温度控制,性能监控等
可以分别通过RDMSR 和WRMSR 两条指令进行读和写的操作,可通过其0xC0000082找到syscall获取SSDT

CR0~3 控制寄存器

CR0包括指示处理器工作方式的控制位,包含启用和禁止分页管理机制的控制位,包含控制浮点协处理器操作的控制位。
CR1被保留,供今后开发的处理器使用,在 80386中不能使用CR1,否则会引起无效指令操作异常。
CR2及CR3由分页管理机制使用。CR0中的位5—位30及CR3中的位0至位11是保留位,这些位不能是随意值,必须为0。

CR2用于发生页异常时报告出错信息。当发生页异常时,处理器把引起页异常的线性地址保存在CR2中。操作系统中的页异常处理程序可以检查CR2的内容,从而查出线性地址空间中的哪一页引起本次异常。
CR3 用于保存页目录表页面的物理地址,因此被称为PDBR。由于目录是页对齐的,所以仅高20位有效,低12 位保留供更加高级的处理器使用。向CR3中装入一个新值时,低12位必须为0;但从 CR3中取值时,低12位被忽略。每当用MOV指令重置CR3的值时,会导致分页机制高速缓冲区的内容无效,用此方法,可以在启用分页机制之前,即把PG 位置1之前,预先刷新分页机制的高速缓存。CR3寄存器即使在CR0寄存器的PG位或PE位为0时也可装入,如在实模式下也可设置CR3,以便进行分页机制的初始化。在任务切换时,CR3要被改变,但是如果新任务中CR3的值与原任务中CR3的值相同,那么处理器不刷新分页高速缓存,以便当任务共享页表时有较快的执行速度。

TR任务寄存器

TR寄存器是一个段寄存器,其内保存的是当前任务状态段TSS的16位段选择符。CPU从用户态自陷到内核态时,通过其找到TSS,再获取本线程的系统空间堆栈段寄存器SS和堆栈指针ESP用来压入用户态的寄存器以保存返回环境。该寄存器通过特权指令ltr和str做装入保存操作。

备忘

cs 为代码段寄存器
ds 为数据段寄存器
ss 为栈段寄存器
es 为扩展段寄存器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值