30天自製作業系統day01

2021-06-25 23:37:32 字數 1050 閱讀 9160

第一天的標題,從計算機結構到匯程式設計序入門。

這一天作者共講了一下內容:

1. 作者上來就用二進位制編輯器製作了乙個軟盤映象boot.img。

像作者一樣,現在已經不需要再去購買軟盤,再說就算想買也不一定買得到。本人使用qemu載入軟盤映象,命令:qemu-system-i386 -fda boot.img -boot a -no-acpi

qemu通過命令配置,需要的命令引數可通過--help查詢。此處意思是:禁用acpi,從軟盤a啟動,檔案boot.img當作軟盤a映象。

2. 為什麼使用二進位制編輯器寫檔案這種方法也能開發作業系統?

從電腦的結構說起,電腦最重要的核心即cpu,只能與其他電路交換電訊號,而且它只能理解on和off兩種狀態。我們所理解的事物,如**、文章、**等對它來說都一樣,最終都是電訊號。二進位制的0和1可以與電訊號對應起來,而二進位制可以與十進位制對應起來表示數,也可以與文字對應起來表示文字,然後文章,**等,所謂一生二,二生三,三生萬物。

cpu除了處理資料之外,我們還能用電訊號向cpu傳送指令。我們編寫的程式最終會被轉化成電訊號傳送給cpu。

軟盤使用磁極的n極和s極表示二進位制的0和1.

3. 使用彙編生成軟盤映象

作者使用的是自己開發的彙編編譯器nask,本人只能乖乖的使用nasm,當然nasm還是比較強大的(嘿嘿,

作者先是只用最牛*的能作出任何資料的db指令編寫。然後又使用了第二牛*的resb指令,即nasm 的times db,一下省卻了不少的麻煩事。最後對資料做了分段的解釋,大概意思。

最終**:

本人遇到的問題:

1. times 0x1fe-$ db 0編譯出錯,修改為times 0x1fe-($-$$) db 0通過。原因應該與分段有關,本程式只有一段,結果不影響。

2. qemu找不到;由於版本問題,qemu名稱有所變化,本人使用的是64位系統,所以呼叫qemu-system-i386.

3. bochs鏈結失敗;乙個關於lpthread庫的問題,需要修改makefile配置檔案。

《30天自製作業系統》學習筆記 day01

1.二進位制編輯器檢視作業系統源 並編寫 博主未採用書中推薦二進位制編輯器,而是使用notepad 和hexeditor外掛程式。參考 新版notepad 加十六進製制檢視的外掛程式hexeditor 000000 helloipl啟動區的名稱可以是任意的字串 8位元組 啟動區 軟盤的第乙個扇區為啟...

30天自製作業系統

第一天的內容很少,是一些簡單的基礎知識,在這裡我就沒有必要寫出來了,只說出大概的輪廓了,然後我會對其中的幾點進行詳細的解釋。文章的第一天的輪廓大概是這樣的,作者首先用二進位制編輯器做了乙個顯示二進位制的程式,然後用彙編完全db的形式,後又進行改善,最後以比較標準的組合語言編寫,但程式主體部分還沒有翻...

30天自製作業系統day02

組合語言學習與makefile入門 作者共講了幾個簡答的指令 org jmp mov add cmp je int hlt。標號的使用,的使用 8個16位暫存器,他們各自意義不同,雖然差不多可以通用,但效果不一樣,如add cx,0x1234和add ax,0x1234指令長度就不一樣。前者為81 ...