X86 CPU First instruction Executed

     跟随着硬件复位, X86 CPU第一条指令在物理地址FFFFFFF0H被提取和执行。这个地址即是出于CPU的最高物理地址4G减去16个字节的地方。BIOS初始化代码必起始于该地址。
    在实模式下,地址FFFFFFF0H在CPU 可寻址的1M字节范围之外。那么CPU是怎样初始化到这个开始地址,请看下面描述。CS register由两部分组成:可见的段selector和隐藏的段基地址部分。在实模式下,段基地址一般是由16-bit的段selector值左移4bits来产生20-bit的段基地址。然而,在一次硬件复位的过程中,在CS中的段selector被装载成F000H,而且段基地址被装载为FFFF0000H。所以CPU开始地址就是段基地址的值加上在EIP register中的值(即FFFF0000H + FFF0H = FFFFFFF0H )。
    在一次硬件复位后,CS register 第一次被装载为一个新的值,在实模式下,CPU会遵循正常的规则去进行地址转换(那就是,CS base address = CS Segsent selector * 16)。为了保证在CS resgister中的段基地址不变直到基于BIOS初始化代码的Eprom被完成,在其中,不允许有导致CS selector值发生改变的far jump or far call,or interrupt产生。
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值