jaja vm

作了幾個重要的修改:

  1. 對heap和stack相關的幾條指令作了正規化,更符合stack machine的設計。
  2. 新增了一條指令discardx,function return時在沒有使用配製local時可以更簡單的free stack空間。
  3. 修正了heap指令的一個大問題,這樣才有辨法正確實作出string模組的功能,如strcpy等。
  4. 原本的sample作了修正外,新增了string和stdio模組,實作了幾個簡單的function。
  5. 實作簡易stdio.printf時,debugger新增自動dump stack狀態,這樣一來debug就更容易了。此外,在debug過程中也發現了幾個debugger的bug,順便一起修正。
  6. assembly parser也作了一些小修正,現在字串可以使用像是\n的escape字元,ID token也支援原先漏掉的底線_。
  7. jaja vm on java vm順便作了porting,不過還有點小bug,大致上執行起來沒問題。



有二點考慮改進的地方:

  1. function return時對於stack裡需要free的空間的處理。
  2. macro的支援。
這二點可有可無,可以跳過。接下來是支援high level language compiler,目前考慮的語言是c,但也可能是lua。將以高階語言寫成的程式編譯成jaja指令集,然後在jaja vm上執行。如果使用lua,目標是將good作出來的程式轉換成可以在jaja機器上直接執行。如果是這樣,指令集需要重新編碼,這部份需要再研究。

(src)

留言

這個網誌中的熱門文章

以lex/yacc實作算式計算機

猜數字遊戲 (電腦猜人)

KillSudoku 4顆星精彩數獨詳解 - 鍊技巧