direct threaded code 化断念 - Scheme VM を書く

direct threaded code にしようと思ったが断念。

  • Object 型にラベルのアドレスを格納しないといけない
    • つまりポインタサイズ
  • Object 型に入れるには tag bit が必要。
    • tag bit を使わずに生ポインタを入れる方法も考慮したが、コンパイラVM 内で動かしている都合上、ポインタだとしても Object::eq を解する必要があるので tag bit は必須。
  • label が良い感じで align されていないのでそのまま格納は無理。
    • pragma 的な何かで align するのが筋?。パフォーマンスが心配?


さてどうしよう。
もう少し考える。

追記

コンパイラ側でうまく対応すれば行けるかも。