x86匯編自制操作系統(tǒng)(1)
一、環(huán)境搭建
必備:
nasm:將asm文件編譯成純二進制文件。nasm是只是一個編譯器,沒有鏈接功能??梢詫R編文件生成.o文件,但不能將多個.o鏈接生成二進制文件。即,不能進行多文件編譯
masm:目前只用到了其中的link16,可以將16位匯編的目標文件(obj格式)鏈接生成二進制文件,可用于實模式匯編多文件編譯
mingw:用到了其中的gcc/g++/ld/objdump/mingw32-make,將gcc/g++將C/C++代碼生成.o文件,ld將其nasm生成的.o鏈接生成二進制文件,objdump輸出二進制文件map信息,mingw32-make可以重命名為make用于自動構(gòu)建
bochs:可單步調(diào)試(匯編)操作系統(tǒng)的虛擬機
可選:
運行虛擬機:VirtualBox; Hyper-V
編輯器:notepad++ + 二進制插件; VSCODE; VS2022。二進制操作還可以用WinHex
git:版本管理,代碼托管到gitee
可能遇到的問題:
bochs:啟動虛擬機依賴配置文件(默認名稱bochsrc.bxrc)、虛擬硬盤(.vhd),還需要不存在.vhd.lock文件(如果系統(tǒng)異常退出需要手動刪除)。虛擬硬盤可使用VirtualBox或者Hyper-V創(chuàng)建。似乎手動創(chuàng)建一個二進制文件,往里面隨便塞數(shù)據(jù)就行,未經(jīng)驗證。
git/gitee:gitee需要有賬號/登錄才能下載,但勝在網(wǎng)絡(luò)穩(wěn)定。x86_asm倉我分成了4個分支,可以選擇對應(yīng)分支下載/clone
二、現(xiàn)狀
分為4個分支,master(develop的穩(wěn)定版本)、develop(開發(fā)分支,不穩(wěn)定)、br_320_200(基本圖形顯示模式)、br_realmode(基本字符顯示模式)

br_realmode:只有"Label Offset:2345D"是我代碼的輸出

br_320_200:圖形顯示模式,VGA基本顯示模式,分辨率320x200

master:VESA高分辨率顯示模式,800x600,段屬性和寫入位置沒解耦,需要手動更改寫入硬盤的位置以及從硬盤讀入的位置

develop:以及將段屬性和寫入位置解耦,測試將rdata填充至4個扇區(qū)
