PC机启动后如何执行第一条指令?

       在过去的三个月内,本人根据《linux内核设计的艺术》和《linux0.11内核完全注释》细读了linux-0.11源码中的大部分内容,最近开始研究清华大学的操作系统实验课中的ucore源代码,因此希望将自己的所思所想分享给大家,也欢迎大家一起来交流探讨。

       当我们按下开机按钮时,电脑是怎么开始执行第一条指令的?

       ①梦回40年前,当时的intel公司生产了一个16位的微处理器芯片8086,它是x86体系架构的鼻祖。但是,8086设计时为了满足当时的寻址要求1MB(个人认为可能当时的内存条最大为1MB),它的地址总线为20位,最大可寻址1MB空间,而数据总线为16位,寄存器也只能存16位的数据,为了填补这4位的差距,intel工程师想出了一个好的方法。一个寄存器存不下,那我用两个寄存器不就行了吗?当时他们的想法是将地址空间分段,因此段寄存器(CS、SS、DS、ES)应运而生,这些寄存器存的是段的基址,我们都知道CPU执行指令是通过CS:IP来执行的,但在当时CS和IP都是16位的,所以intel规定CS:IP=CS<<4+IP,来满足20位寻址。

       背景大概就是这么多了,当时intel公司规定在开机启动后,CPU运行在实模式,根据CS:IP来执行指令,那时候通过硬件逻辑已经将CS写死为0xF000,IP写死为0xFFF0,也就是说只要你开机或断电重启,CPU就会执行0xF000:0xFFF0这个地址里面的指令。按照intel规定,

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值