[Forth] Threaded Code
Threaded Code. マルチスレッドではない。コードの実行方法か。http://en.wikipedia.org/wiki/Forth_virtual_machine
言語を作るのなら重要項目の一つだね。
- Threaded Code
- このサイトが有名らしい。各種 threaded code を説明している。
- Moving Forth: Part 1
- 図つきて各種 threaded code の説明がある。
- Speed of various interpreter dispatch techniques V2
- 各 threaded code の性能比較。やはり DTC が速いのかな。repl-switch.c と switch.c の違いがよくわからん。make 一発で実行できるのが嬉しい。
Forth では次のような感じの実装になる。64bit アセンブラで。NASM ね。
rsi レジスタがバイトコードのアドレス。loadsq で rax に次に実行するバイトコードのアドレスをロードして(rsi はインクリメントされる)、ジャンプする。
Indirect threaded code
lodsq
jmp qword [rax]
Direct threaded code
lodsq
jmp rax
Token threaded code
lodsq
jmp [token_table + rax * 8]
0 件のコメント:
コメントを投稿