sysprog2016
主講人: jserv / 課程討論區: 2016 年系統軟體課程
根據教學可以輸出碎形,但是速度非常慢
現在要用 JIT 版本加速
首先要先在 header 中加上
接著將 interpreter 改為 compiler
呼叫的部份也要改
變數部份也要做一些新增和修改
接下來要根據不同平台去定義不同的 arch (硬體架構):
在上面有宣告 dasm_State* d; 可以呼叫 dasm_init 來初始化
第二個參數為在開始 define 的 DASM_MAXSECTION 1
結束以上動作後,還沒完全的初始化必須在 call dasm_setupglobal(&d, labels, lbl__MAX);
在 call dasm_setup(&d, bf_actions);
將 actionlist 當作參數傳入
最後 call dasm_growpc(&d, npc); 來完成初始化
npc 為目前被分配的 dynamic label
接下來要做一連串的定義,和巨集
接下來一樣做 Emitting 各 expression ,如 Arithmetic, I/O, Loops, 完成 compile。
用 JIT compiler 來執行之前的程式:
rubi 是成大資訊系師生合作開發、類似 Ruby 語法的程式語言實作,提供 JIT compiler,主體程式碼不到一千行,具體而微。Rubi 使用前述 DynASM 打造,請留意看 Makefile
得知編譯方式。
prog
的程式,熟悉 Rubi 語法,著手設計類似 A09: jit-compiler 裡頭整合性的 benchmark suite,提出改善內建 benchmark suite 效能的機制,並且要能夠充分解釋行為,需要一併透過 gnuplot 自動產生效能分析圖表