Perlテックブログ

ITエンジニアの成長意欲を刺激する技術考察、モジュール開発の日記。Perlイベントや国内や海外のPerlの記事の紹介。

ポータブルな表現は文字列、非ポータブルな表現はポインタ | SPVM開発日記

SPVMでexeを出力できるように、実装を続けているんだけれど、パッケージとか、サブルーチンとか、パッケージ変数とか、フィールドとかいった情報を、いったんポータブルな表現に変換するということをやっている。

そして、このポータブルな表現から、ランタイム情報を作る。

コンパイル情報 -> 必要なものをポータブルな表現へ -> ランタイム情報

どうして中間的にポータブルな表現にしないといけないかといえば、バーチャルマシンで動かす場合は、ランタイム情報は普通に、メモリ上の表現でよいのだけれど、exe化する場合に、C言語ソースコードにランタイム情報を書き込まないといけなから。

ソースコードに書き込むということは、そこにはポインタのような実行時にコンピュータが決めるような情報を使うことができない

それともう一つ、単純な表現が利用しやすい。たとえば、文字列の配列とか、整数の配列とかだと、ソースコードに変換するときに簡単だ。

もう少し詳しく書くとこうなる。

コンパイル情報(ポインタ含む) -> ポータブルな表現(ポインタ含まない、整数や文字列の配列) -> ランタイム情報(ポインタ含む)

今この変換を行うロジックを書いていて、これが分量がかなりあって、一日、一項目ひとつづつくらい進めている。