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