麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 操作系統 > 正文

lab1 part2 the boot loader

2024-06-28 16:02:14
字體:
來源:轉載
供稿:網友

在上一部分將硬件進行初始化后,接下來就是Boot loader的工作了,這段代碼從0x7c00處開始。

那這段代碼是從哪里來的呢

在材料中已經給出:

When the BIOS finds a bootable floppy or hard disk, it loads the 512-byte boot sector into memory at physical addresses 0x7c00 through 0x7dff, and then uses a jmp instruction to set the CS:ip to 0000:7c00, passing control to the boot loader

從磁盤中讀取一個扇區到內存中,每個扇區固定是512KB。

然后BIOS初始化完成以后再將第一個扇區的內容讀到7C00處后,工作就結束了,控制權轉交給bios loader

boot loader主要工作是:

1.開啟從實模式到32位保護模式

2.把內核代碼從磁盤中加載到內存中

在這里實模式和保護模式的區別材料里已經給出

because it is only in this mode that software can access all the memory above 1MB in the PRocessor's physical address space

即訪問更高地址的內存,并且從16位變為32位。

首先打開A20地址線

至于為什么要開和為什么這么開,下面有傳送門,主要是歷史發展的原因為了兼容以前的機子,打開的方法的話主要是和CPU的具體的打開的引腳有關系。

傳送門:http://blog.csdn.net/lightseed/article/details/4305865

然后用新的GDT

真正做到從實模式到保護模式的其實就是改變CR0這個寄存器的值。

在這之后,就有虛擬地址和物理地址之分了。

這也是為什么要重新定義GDT,之前的GDT是直接尋址到物理地址的,在這里增加了虛擬地址,所以段表里的東西也會相應進行修改,但是就這個系統的話,到這里即使開了虛擬地址,物理內存還是等于虛擬內存地址的。

這里有一個分段的思想,在LAB2虛擬內存中會詳細說明,即把內存分為一段一段用段表進行管理。

跳轉指令,跳轉到32位的代碼段進行執行。就是下面的

從寄存器也能看到從16位變成了32位,上面的一直是eax而到了這里就是ax。在這里為初始化保護模式的寄存器。

接著初始化了一個堆棧,然后就可以調用C程序了。

能夠進行函數運算的都需要堆棧,所以之前一直是匯編寫的,因為沒有堆棧來調用C語言。在這里初始化了寄存器,并且初始化了一個堆棧給C語言有運行的環境。

esp就是棧頂指針,從這里可以看出,把0X7C00這個作為現在的棧頂了。

然后就可以調用Bootmain這個C語言程序了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级性生活视频 | 哪里可以看免费的av | 亚洲午夜国产 | 久久精品视频亚洲 | 久久人人爽人人爽人人片av高清 | 精品中文字幕久久久久四十五十骆 | 免费国产视频大全入口 | 欧美日韩手机在线观看 | 午夜色视频在线观看 | 欧美人禽 | 青热久思思 | 午夜神马电影网 | 欧美福利视频一区二区 | 日韩色视频 | 羞羞网站 | 999久久国精品免费观看网站 | 国产精品视频yy9299一区 | 99热99精品| 羞羞色院91精品网站 | 91av在线影院 | 麻豆视频在线播放 | 成人做爰s片免费看网站 | 亚洲二区三区在线 | 亚洲成人福利网站 | 一区二区三区在线视频观看58 | 91美女啪啪 | 精品呦女| 黄色视频一级毛片 | 涩涩屋av| 欧美一级特黄aaaaaaa什 | 999精品国产 | 久久精品com| 色综合网在线观看 | 久久激情免费视频 | 羞羞视频免费视频欧美 | 美女羞羞视频在线观看 | 92看片淫黄大片一级 | 操你啦免费视频 | 精品亚洲午夜久久久久91 | 一级毛片真人免费播放视频 | 双性精h调教灌尿打屁股的文案 |