bootstrapOS
1.0.0
許多OS教程從組裝或C ++開始。我們從機器代碼開始。
在此Raspberry Pi 4教程中,我們將在機器代碼中編寫一個自託管組裝程序。然後,我們將發展該編譯器(通過實現新功能,然後在編譯器源代碼中使用這些功能),以使能夠扭轉高級語言的內容。最後,在大多數教程開始的高級語言中,我們將為一天託管本教程自己的文檔。
里程碑:自舉機碼?
;命令評論里程碑:大型機器代碼?
里程碑:被標記為Goto?
J :二進制的相對分支L :goto的標籤(讀取帶有方案pos4 name 的記憶磁帶) GOTO :Goto標籤里程碑:有條件的goto?
GOEQGONEGOGTGOLTGOGEGOLE里程碑:標記的功能?
CALL :“ goto”,但有鏈接的分支里程碑:發射字符串
MOV reg charEMIT string : MOV reg char系列的宏,並以逃生序列支持CALL emit 里程碑:引導程序組件
RET :返回功能後通話MOV reg hexMOV reg decMOV reg regADD reg reg [reg/value] :設置寄存器的值SUB reg reg [reg/value] :設置寄存器的值LDB reg reg_mem offset :加載字節STB reg reg_mem offset :存儲字節ORR reg reg (reg >>/<< value)AND reg reg (reg >>/<< value)里程碑:堆棧 - 朗函數
.func [name] [num locals].call [name]里程碑:推,流行和DUP
.push constant [val]
.dup
.pop local [idx]
.push local [idx]
.pop param [idx]
.push param [idx]
.pop global [idx]
.push global [idx]
里程碑:堆棧 - 蘭格內存訪問
.load (...,addr) - >(...,val) .store (...,Val,addr) - >(...)里程碑:算術
.add.sub里程碑:堆分配
malloc堆棧函數(...,num bytes) - >(...,addr)里程碑:解析和編譯
fn main的goto) 
for f in ./os/*.txt; do wc -l $f; done | Rscript bar-gen.R ; feh ./loc-stats.png