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

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