コード体系について
(1) フロントエンドバイトコード
- 現状のフロントエンドバイトコードは、page0103のとおり、圧倒的に小さいという特徴があるけれど、しかしこれは限界ではない。なぜならエンコードはhh4をベースにしていて、各命令のより精密な出現頻度を反映できていないし、文字列定数も単純な8ビット形式と7ビット形式くらいしかないので、やはり各文字の精密な出現頻度を反映できていない。
- もしレンジコーダなどを利用してこれらについても最適化できたとしたら、おそらくさらに1割くらいの改善が見込めるのではないかと思う。つまりhelloは13バイトになり、hexdumpは94バイトになるのではないかと思っている。
- そういう研究をやりやすくするためにも、(2)のコード体系の拡充は重要だと思う(いろんな実験がやりやすくなる)。
(2) さまざまなバイトコード体系
- フロントエンドコード(fr):hh4
- バックエンドコード(bk):hh4
- バックエンドコードb32形式(b32):hh4
- bs32形式(bs32):バックエンドコードをSInt32でエンコードしたもの
- fs16形式(fs16):バックエンドコードをSInt16でエンコードしたもの
- fr32形式(fr32):フロントエンドコードをSInt32でエンコードしたもの
- fs32形式(fs32):簡易フロントエンドコードをSInt32でエンコードしたもの
- fs16形式(fs16):fs32のSInt16版
- なぜコード体系を増やすのか?
- コンパイラやVMを作ってもらうときに、いきなりbkかfrを使わせるのは、少々大変だなと感じたから。bs32がもっとも単純。
- bs32→fs32→fr32→frの順で変換する。
こめんと欄