Skip to content

Latest commit

 

History

History
56 lines (38 loc) · 1.62 KB

readme.md

File metadata and controls

56 lines (38 loc) · 1.62 KB

bf-eval

高速なbfインタプリタを作成したい

動かし方

手軽に動かす場合:

$ go run main.go
AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDEGFFEEEEDDDDDDCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDEEEFGIIGFFEEEDDDDDDDDCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBB
...

ビルドする場合

$ go build

$ ./bf-eval
AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDEGFFEEEEDDDDDDCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDEEEFGIIGFFEEEDDDDDDDDCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBB
...

その他

コミットの後ろに書いてある秒数は、作者の手元での実行速度です。 測定は time go run main.go にて行っています。

スペックは以下のとおりで、wsl2上のUbuntu 22.04 LTSで動かしています。

CPU: Ryzen7 5700X メモリ: 32ギガ(うち、wslに割り当てているのは16ギガ)

llvm版に関して

bfのコードをllvm irに変換できます。

$ go run cmd/llvm_compiler/main.go <input.bf> > output.ll

makeを使えばバイナリまで作成可能です。

$ make

$ ./optimized-bf
AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDEGFFEEEEDDDDDDCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
AAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDEEEFGIIGFFEEEDDDDDDDDCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBB
...

なお、llvm-18系が必要です。