日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

一步步编写操作系统 24 编写内核加载器

發(fā)布時(shí)間:2023/12/10 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步编写操作系统 24 编写内核加载器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這一節(jié)的內(nèi)容并不長(zhǎng),因?yàn)樵谶M(jìn)入保護(hù)模式之前,我們能做的不多,loader是要經(jīng)過實(shí)模式到保護(hù)模式的過渡,并最終在保護(hù)模式下加載內(nèi)核。本節(jié)只實(shí)現(xiàn)一個(gè)簡(jiǎn)單的loader,本loader只在實(shí)模式下工作,等學(xué)習(xí)了保護(hù)模式后,我們?cè)賮韨€(gè)真格的。

由于本節(jié)較容易,沒有新知識(shí),直接上菜啦,見代碼

1 %include "boot.inc"2 section loader vstart=LOADER_BASE_ADDR34 ; 輸出背景色綠色,前景色紅色,并且跳動(dòng)的字符串"1 MBR"5 mov byte [gs:0x00],'2'6 mov byte [gs:0x01],0xA4 ; A表示綠色背景閃爍,4表示前景色為紅色78 mov byte [gs:0x02],' '9 mov byte [gs:0x03],0xA41011 mov byte [gs:0x04],'L'12 mov byte [gs:0x05],0xA41314 mov byte [gs:0x06],'O'15 mov byte [gs:0x07],0xA41617 mov byte [gs:0x08],'A'18 mov byte [gs:0x09],0xA41920 mov byte [gs:0x0a],'D'21 mov byte [gs:0x0b],0xA42223 mov byte [gs:0x0c],'E'24 mov byte [gs:0x0d],0xA42526 mov byte [gs:0x0e],'R'27 mov byte [gs:0x0f],0xA42829 jmp $ ; 通過死循環(huán)使程序懸停在此

對(duì)這個(gè)loader中的代碼,大家是否覺得好親切、毫無壓力呢。這和咱們最初的那個(gè)MBR好接近,不同的是,在這個(gè)loader中,打印的字符串是“2 loader”。

本loader程序第2行代碼用到了LOADER_BASE_ADDR,所以在第1行中把boot.inc包含進(jìn)來了,其值是0x900。其它代碼就不用講啦。

編譯nasm -I include/ -o loader.bin loader.S回車

將生成的loader.bin寫入硬盤第2個(gè)扇區(qū)。第0個(gè)扇區(qū)是MBR,第1個(gè)扇區(qū)是空的未使用,原因如前所述,純粹個(gè)人喜好。

dd if=./loader.bin of=/此處替換成你的安裝目錄/bochs/hd60M.img bs=512 count=1 seek=2 conv=notrunc回車,下面是dd命令的三行輸出。

記錄了0+1 的讀入

記錄了0+1 的寫出

98字節(jié)(98 B)已復(fù)制,8.9113e-05 秒,1.1 MB/秒

可見,我們的loader.bin只有98字節(jié),遠(yuǎn)遠(yuǎn)小于64k。

小激動(dòng)的時(shí)刻到了,我們?cè)撨\(yùn)行bochs來驗(yàn)證了。如果程序正確的話,MBR會(huì)跳轉(zhuǎn)到loader.bin去運(yùn)行,屏幕上會(huì)顯示“2 loader”。

啟動(dòng)虛擬機(jī),執(zhí)行。效果如圖

?

這次我只抓了一張圖,但我人格保證這是跳動(dòng)的字符,大家在自己的虛擬機(jī)上體驗(yàn)體驗(yàn)吧。

Loader剛剛開了個(gè)頭,馬上就要和大家暫別了。因?yàn)檫@個(gè)loader目前還沒有實(shí)際意義,目前只是來驗(yàn)證MBR和loader的接力是否成功,它最終的任務(wù)是要加載內(nèi)核。可是內(nèi)核是運(yùn)行在32位保護(hù)模式環(huán)境下,我們當(dāng)前還在實(shí)模式下呢。首先咱們得知道什么是保護(hù)模式,其次還得想辦法進(jìn)入到保護(hù)模式,前面的路還很遠(yuǎn)。

好啦,本章到此告一段落,等我們學(xué)習(xí)保護(hù)模式后,我們還會(huì)回來繼續(xù)改進(jìn)loader。

【再續(xù)】

本內(nèi)容摘自《操作系統(tǒng)真象還原》,請(qǐng)大伙兒支持正版,多謝多謝。

總結(jié)

以上是生活随笔為你收集整理的一步步编写操作系统 24 编写内核加载器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。