文檔庫

最新最全的文檔下載
當前位置:文檔庫 > linux boot

linux boot

Linux 啟動學習筆記

電源啟動,一個特定的硬件電路將cpu的reset置位。然后處理器的部分寄存器(包括cs和eip)設為固定值,處于物理地址0xfffffff0的代碼被執行,該地址映射到ROM,被執行的代碼在x86體系結構中稱為basic input/output system(BIOS)。

啟動時cs中s = 0xF000,rip=0xFFF0,則地址為F000H*10H+FFF0H=FFFF0H,段長度=64KB,CPU代碼指針指向FFFF0,但是,FFFF0H怎么會變成0xfffffff0?

這就要從cpu段寄存器說起了

X86體系結構一共有六個段寄存器,每一個寄存器都一個可見部分和隱藏部分,如下圖所示

linux boot

Cpu運行在實模式時候,物理地址=左移4位的段地址+偏移地址

運行在保護模式時,物理地址=段基址+偏移地址

(上述段地址為cs中的visible part,段基址在cs中hidden part)

下表為按下電源鍵reset置位后CPU中部分寄存器的值

linux boot

可以看到cs中visible part為f000H,而hidden部分的段基址為ffff0000,在cpu取第一條指令的時候,采用跟保護模式一樣的地址計算方式,即采用描述符。因此第一條指令的地址

=ffff0000+fff0=fffffff0。

linux boot

(共3頁)
福彩中奖查询 腾讯欢乐麻将官方网站 配资盘 海南琼崖麻将官方下载 篮球即时比分捷报比分网 长江健康东方财富股吧 打麻将上下分app软件下载 股票融资怎么做t 0 球探比分app旧版下载 南粤36选7 篮球即时比分90vs直播 山西十一选五 最快的即时比分网站 007足球比分在线 qq游戏连连看麻将规则 辽宁33选7走势图500期 球盘体育比分网