コード体系について

  • (by K, 2014.09.01)

(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でエンコードしたもの
    • fs32形式にはリピートレジスタや型推論がない。
  • fs16形式(fs16):fs32のSInt16版
  • なぜコード体系を増やすのか?
    • コンパイラやVMを作ってもらうときに、いきなりbkかfrを使わせるのは、少々大変だなと感じたから。bs32がもっとも単純。
    • ASKA→bs32→fs32→fr32→frの順で変換する。
    • ASKA→bs32→bkの順で変換する。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-09-01 (月) 07:15:31 (1600d)