Skip to content
/ bf-eval Public

bfインタプリタ作って高速化を目指す

License

Notifications You must be signed in to change notification settings

uchijo/bf-eval

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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系が必要です。

About

bfインタプリタ作って高速化を目指す

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published