X86保护模式编程总结(2)

本文详细介绍了CPU在复位后的初始状态设置,包括各寄存器如EFLAGS、EIP、CR0等的具体数值,以及段寄存器、调试寄存器的状态,并对FPU状态进行了描述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CPU复位后的初始化:

EFLAGS=0x00000002 (高10位未定义)

EIP=0x0000FFF0

CR0=0x60000010

CR2/CR3/CR4=0x00000000

CS={选择符=0x0F000; 基地址=0xFFFF0000; 段限=0x0FFFF; AR=存在,读/写,已访问}

SS,DS,ES,FS,GS={选择符=0x0000; 基地址=0x0000; 段限=0x0FFFF; AR=存在,读/写,已问}

EDX=0x000005xx{ DH=CPU部件标识,DL=CPU版本号}

EAX=0 或 其它(出错)

EBX,ECX,ESI,EDI,EBP,ESP=0x0000000

LDTR={选择符=0x0000; 基地址=0x0000; 段限=0x0FFFF; AR=存在,读/写}

GDTR,IDTR={基地址=0x0000; 段限=0x0FFFF; AR=存在,读/写}

DR0,DR1,DR2,DR3=0x00000000

DR6=0xFFFF0FF0

DR7=0x00000400

时间印戮计数器=0

控制和事件选择=0

TR12=0

所有其它型号特定的寄存器(MSR)=未定义

数据和代码告诉缓冲,TLB=无效

FINIT或FNINIT之后的FPU状态:

字段 值 说明

控制字 0x037F

--(无穷大控制) 0 仿射

--舍入控制 00 舍入到最接近值

--精度控制 00 扩充的

--异常屏蔽 111111 异常被屏蔽

状态字 0x0000

--(忙) 0 __

--条件码 0000 __

--栈顶 000 寄存器0是栈顶

--异常摘要 0 无异常

--栈标志 0 __

--异常标志 000000 无异常

标志字 0xFFFF

--标志 11 空

寄存器 不变 不变

异常指针

--指令码 0 被清0

--指令地址 0 被清0

--操作数地址 0 被清0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值