本人,會點點linux.慚愧!
最近偶讀起《萊昂氏unix源**分析》一書,彷彿被xx點化了般,突然想自己也寫個作業系統的想法.
嗯…怎麼寫,沒個頭緒.╮(╯▽╰)╭.
這時, linux核心完全注釋(0.11版)出現在我眼前,裡面寫了一款軟體:>bochs,它是80x86的模擬器,可以執行linux,win作業系統,以及自己寫的匯程式設計序.
救星.嗯…,怎麼寫彙編,還是沒頭緒啊.╮(╯▽╰)╭
想起以前閱讀的,《王爽組合語言》很有用,然真正弄起來並沒有卵用.而linux核心完全注釋(0.11版),裡面又有寫了相關於編譯器(assembly),如:as86和ld86.依葫蘆寫了自己的乙個8086匯程式設計序.
嗯…,怎麼裝,讓bochs執行啊.這是一堆大坑,我小心翼翼的爬啊.其中:
1, as86 和ld86要怎麼安裝,這裡的命令的細節又是怎麼了.狂看起命令手冊.
2,as86採用intel風格的組合語言,(一些細節處還跟王爽彙編的有些不一樣.)(我選擇死亡)
3,經編譯的匯程式設計序,又是怎麼變為映象檔案,讓bochs執行.(書啊書,我又來找你了)
嗯…,怎麼除錯啊.
發現bochs可以除錯,單步除錯.這時我的眼睛亮了起來,又要爬坑了
又發現objdump可以反彙編,我的映象檔案.這時我的眼睛又亮了起來.
當機器從0x7c00處執行我的第一行**時….我想跳廣場舞
linux核心完全注釋(0.11版),裡面介紹了一些相關的硬體知識,其中:顯示控制.
裡面告訴了我,如何在顯示器上顯示了乙個字元,和其顏色.但是如何在乙個顯示器上顯示乙個畫素,我就不得而知了.
經過一番狂搜尋,一本書出現在我眼前:vesa vbe標準
不過,裡面一些bios如何控制硬體的細節,又沒有寫上來,這時我又覺得有必要去看看了.為啥,因為linux在執行時不使用bios裡提供的功能,而是自己寫的.這給了我乙個提示,鐵定有相關video細節的書.
果不其然,經過一番搜尋,我又找到了:
vga programmers master reference manual (vga程式設計師主要參考手冊),(這本口味好重,太過細節了,反而不容易懂.)
video subsystem,主頁: ,這本書是簡單介紹,比較好懂
這時,我踩過的坑.
BIOS載入MBR到記憶體位址0x7C00的由來
2012 11 27 14 03 48 對於很多人來講0x7c00這個位址是很神秘的,不知道這是幹什麼的。但是對於了解過x86平台下bios啟動過程的人,對這個位址再熟悉不過了。bios就是將mbr讀入0x7c00位址,然後進行後續的引導的。作業系統或是bootloader開發者必須假設 他們的彙編...
BIOS載入MBR到記憶體位址0x7C00的由來
對於很多人來講0x7c00這個位址是很神秘的,不知道這是幹什麼的。但是對於了解過x86平台下bios啟動過程的人,對這個位址再熟悉不過了。bios就是將mbr讀入0x7c00位址,然後進行後續的引導的。作業系統或是bootloader開發者必須假設 他們的彙編 被載入並從0x7c00處開始執行。0x...
為什麼主引導記錄的記憶體位址是0x7C00?
出處 計算機原理 課本說,啟動時,主引導記錄會存入記憶體位址0x7c00。這個奇怪的位址,是怎麼來的,課本就不解釋了。我一直有疑問,為什麼不存入記憶體的頭部 尾部 或者其他位置,而偏偏存入這個比 32kb 小1024位元組的地方?昨天,我讀到一篇文章,終於解開了這個謎。首先,如果你不知道,主引導記錄...