陳鍾誠

Version 1.0

系統程式 – 習題

選項一 – 從 C 到組合語言

  1. 請將以下編譯器擴充,讓他可以處理 IF 語法
  2. 請寫出第一題的中間碼之虛擬機
  3. 請寫出將中間碼轉為組合語言的程式
  4. 請寫出第 3 題組合語言的組譯器
    • 若選 x86 的話,可能要自訂指令集
    • 若選 RISC-V 的話,要弄清楚指令編碼規則
    • 若選 hackCPU 是最簡單的 (老師也有寫範例)
    • 參考 (c0c) – https://github.com/ccc-c/c0c
  5. 請寫出第四題輸出機器碼可執行的虛擬機

選項二 – nand2tetris

這組選項老師都有寫範例 (1,2 有 js+c 版本, 3, 4 只有 js 版本)

  1. 請寫出 nand2tetris 的 HackCPU 之虛擬機
  2. 請寫出寫 nand2tetris HackCPU 的組譯器
  3. 請寫出寫 nand2tetris 第 7, 8 兩章的虛擬機
  4. 請寫出寫 nand2tetris 第 9, 10, 11 三章的編譯器
  5. 請閱讀 nand2tetris 第 12 章的作業系統,並對程式碼加上你的註解。