Banyak tutorial OS dimulai dalam perakitan atau C ++. Kami mulai dalam kode mesin.
Dalam tutorial Raspberry Pi 4 ini, kami akan menulis assembler yang diselenggarakan sendiri dalam kode mesin. Kami kemudian akan mengembangkan kompiler itu (dengan menerapkan fitur baru kemudian menggunakan fitur-fitur tersebut dalam kode sumber kompiler) menjadi sesuatu yang mampu menguasai bahasa tingkat tinggi. Akhirnya, dalam bahasa tingkat tinggi kami, di mana sebagian besar tutorial dimulai, kami akan menulis server web sederhana untuk satu hari menjadi tuan rumah dokumentasi tutorial sendiri.
Tonggak: Kode Mesin Bootstrap?
; Perintah untuk komentar Tonggak sejarah: Kode mesin besar-endian?
Tonggak sejarah: berlabel goto?
J : Cabang relatif dengan biner L : Label untuk goto (baca ke dalam pita memori dengan skema pos4 name ) GOTO : Label Goto Tonggak sejarah: goto bersyarat?
GOEQGONEGOGTGOLTGOGEGOLETonggak sejarah: Fungsi berlabel?
CALL : "goto" tetapi dengan bercabang tertaut Tonggak sejarah: string emitting
MOV reg charEMIT string : makro untuk serangkaian MOV reg char dan CALL emit dengan dukungan urutan melarikan diri Tonggak: perakitan bootstrap
RET : kembalikan setelah panggilan fungsi MOV reg hexMOV reg decMOV reg regADD reg reg [reg/value] : Tetapkan nilai register SUB reg reg [reg/value] : Tetapkan nilai register LDB reg reg_mem offset : Muat byte STB reg reg_mem offset : Simpan byte ORR reg reg (reg >>/<< value)AND reg reg (reg >>/<< value)Tonggak: Fungsi Stack-Lang
.func [name] [num locals].call [name]Tonggak sejarah: dorong, pop, dan dup
.push constant [val]
.dup
.pop local [idx]
.push local [idx]
.pop param [idx]
.push param [idx]
.pop global [idx]
.push global [idx]
Tonggak: Akses memori stack-lang
.load (..., addr) -> (..., val) .store (..., val, addr) -> (...)Tonggak sejarah: Aritmatika
.add.subTonggak: Alokasi tumpukan
malloc stack (..., num byte) -> (..., addr)Tonggak sejarah: parsing dan kompilasi
fn main ) 
for f in ./os/*.txt; do wc -l $f; done | Rscript bar-gen.R ; feh ./loc-stats.png