私は次のように機能するBrainfuck実装(C ++)を作成しました:
- 入力brainfuckファイルを読む
- 些細な最適化を行う
- brainfuckをVMのマシンコードに変換します
- このマシンコードをVMで実行します
これはかなり高速ですが、ボトルネックは現在VMにあります。これはC++で記述されており、トークンを読み取り、アクションを実行します(Brainfuckを知っている場合は、それほど多くはありません)。
私がやりたいのは、VMを取り除き、その場でネイティブマシンコードを生成することです(基本的にはJITコンパイラー)。これは簡単に20倍のスピードアップになります。
これは、ステップ3がJITコンパイラに置き換えられ、ステップ4が生成されたマシンコードの実行に置き換えられることを意味します。
どこから始めればよいのかわからないので、いくつか質問があります。
- これはどのように機能し、生成されたマシンコードはどのように実行されますか?
- ネイティブマシンコードを生成するためのC++ライブラリはありますか?