Brainfuck VMとか作ってみた
BrainfuckやOokのソースコードをバイトコードにコンパイルするコンパイラ、バイトコードを実行するインタプリタ、バイトコードを機械語にコンパイルして実行するJITの三種類のプログラムを作ってみた。
GitHub - syuu1228/bfvm: Brainfuck VM
使い方は以下の通り:
$ make $ ./bfc brainfuck hello.bf hello.bfo #brainfuckで書かれてるhello.bfをhello.bfoにコンパイル $ ./bfip hello.bfo #インタプリタで実行 Hello World! $ ./bfjit hello.bfo #JITで実行 Hello World! $
JITとかカッコよく呼んでるけど、ようは前のエントリでやってた機械語を配列にぶち込んで実行する奴そのまんま。
ちなみにMakefileにCFLAGS=-m32 LDFLAGS=-m32と書いているので32bit環境だともしかしたらエラーするかもしれない。その場合は両者を空にしてみて欲しい。