开机后的第一条指令
关于电脑加电后的第一条指令,有很多人在网络上问过,但解答并不是那么的清晰,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),这么算下来
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
