本文主要是介绍开机后的第一条指令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
关于电脑加电后的第一条指令,有很多人在网络上问过,但解答并不是那么的清晰,csdn论坛上也有很多这类的讨论帖,
例如:CPU在RSET后的第一条执行指令的地址问题、请教x86的启动过程,cpu如何自举第一条指令? 、开机第一条指令是如何取到和执行的?
存在问题的地方大概是这么几点:
1.第一条指令的地址是什么
2.第一条指令的地址为什么是0xFFFFFFF0
3.第一条指令存储在什么地方
4.BIOS代码块映射在什么位置
5.第一条指令的内容是什么
然后挨个解答。。。。。。。
----------------------------------------------------------------------------------------------------------------------------------------------------------
一、第一条指令的地址是什么
这个问题网上有两种解答,0xFFFFFFF0,0xFFFF0。当然第一种是对的,这个在intel手册第三卷第9章有详细说明,第一条指令的地址为0xFFFFFFF0
这个地址自从intel发布80386后就延续下来
第二种地址在早年间也是对的,在intel还在使用16位cpu的时候,8086,8088,地址空间为1M,第一条指令的地址就是0xFFFF0了,回答这种地址的应该看的是早年的书,现在pc机已经不再使用了这是加电后寄存器的初始值
又或者是拿16位实模式说事,PC刚开机时确是16位实模式,这种模式的地址计算方式是使用CS和EIP寄存器中的值(Selector*16+EIP),这么算下来
这篇关于开机后的第一条指令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!