Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BrainF*ckの高速化
Search
Akira Moroo
March 04, 2018
Programming
0
850
BrainF*ckの高速化
以下の内容の解説です.
https://eli.thegreenplace.net/2017/adventures-in-jit-compilation-part-1-an-interpreter/
Akira Moroo
March 04, 2018
Tweet
Share
More Decks by Akira Moroo
See All by Akira Moroo
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
120
Exploring x86 MSR Space
retrage
0
1.4k
LLMでバイナリ解析支援
retrage
0
220
GitHub ActionsでDevSecOpsごっこ
retrage
0
89
Practical Rust (Hypervisor) Firmware
retrage
3
1.8k
Bypassing UEFI Secure Boot with Thin-Hypervisor
retrage
0
1.2k
Porting Linux to Nabla Containers
retrage
0
1.2k
Network Boot from Bell Labs
retrage
2
1.7k
Unikernelで始める自作OS/OS Development with Unikernel
retrage
1
640
Other Decks in Programming
See All in Programming
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
380
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.5k
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.9k
今、アーキテクトとして 品質保証にどう関わるか
nealle
0
170
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
860
Package Management Learnings from Homebrew
mikemcquaid
0
270
2026年 エンジニアリング自己学習法
yumechi
0
150
Geminiの機能を調べ尽くしてみた
naruyoshimi
0
110
AI巻き込み型コードレビューのススメ
nealle
2
2.2k
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
1
340
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
190
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
1
160
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
810
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
130
The Language of Interfaces
destraynor
162
26k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
How STYLIGHT went responsive
nonsquared
100
6k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Making Projects Easy
brettharned
120
6.6k
Bash Introduction
62gerente
615
210k
Code Reviewing Like a Champion
maltzj
527
40k
Building AI with AI
inesmontani
PRO
1
730
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
160
[SF Ruby Conf 2025] Rails X
palkan
2
790
Transcript
BrainF*ckの高速化 2018/03/04 Dentoo.LT 19 @retrage
BrainF*ck? • BrainFuck (BF) • いわゆる難解プログラミング言語 • ><+-.,[]の8個の命令から成る • 言語処理系入門に最適
1
愚直なBF処理系は遅い • [と]は条件付きジャンプ命令 • [はポインタの指す値が0ならば次の]までジャンプ • ]はポインタの指す値が0でないならば次の[までジャン プ • 愚直なBF処理系では間にある命令は実行されな
いにも関わらず読み出される • ⇒初期化時にあらかじめJumpTableを作成しておく 2
ホットスポットを探す • 命令の実行には局所性がある • 一部の命令は大量に実行されるが,他の命令はあまり 実行されない • 例: データポインタを7デクリメント •
BF: <<<<<<< • C: dataptr -= 7; • ⇒ホットスポットに対応するBFより高水準な命令を 追加,初期化時にBFをこれらの命令に変換,実行 3
ループの最適化 • [と]のループには使われるパターンが存在 • 例: 現在のメモリを0にセット • C: data[data_ptr] =
0; • BF: [-] • 一見短いが,0になるまでループされる • ⇒ループパターンを表現する高水準な命令を追加 4
まとめ • BrainF*ckは実装しやすい言語処理系 • JumpTableで高速化 • 高水準な命令へ変換することで高速化 • ループのパターンを高水準な命令へ変換 •
Rustでの実装 • https://github.com/retrage/brainfuck-rs 5
参考文献 • https://ja.wikipedia.org/wiki/Brainfuck • https://eli.thegreenplace.net/2017/adventures-in- jit-compilation-part-1-an-interpreter/ • https://postd.cc/adventures-in-jit-compilation-part- 1-an-interpreter/ •
https://github.com/retrage/brainfuck-rs 6