* 位置独立コード -(by [[K]], 2014.06.15) ** (0) -あるプログラムが、メモリ上のどこにロードされても問題なくそのまま実行できるように工夫されているとき、そのプログラムは「位置独立」だと呼ばれます。position-independentともいいます。 -位置独立なコードを構成できるかどうかは、CPUの命令セットによってまちまちです。相対ジャンプやプログラムカウンタ相対指定などがあると、とても位置独立コードを生成しやすくなります。 ** (1) -先日、OSECPU-VMの命令セットは、相対アドレス指定を一切持っていないにもかかわらず、位置独立なコードを非常に容易に生成できることに気づきました。というか、普通の位置独立なコードでは、コードセクションの任意の箇所にNOP命令を入れると当然ながらアドレスの対応関係がくるってしまってダメになってしまいますが、OSECPU-VMではNOP命令をいくつ挿入しても分岐先やデータ参照先が不整合になることはなく、問題が起きません!・・・我ながらこれはすごいと思いました。 -これはひとえに、OSECPU-VMがラベルによって分岐先を指定する方式だからです。 -これはひとえに、OSECPU-VMがラベルによって分岐先を指定する方式だからです。・・・実CPUではラベルのテーブルを参照するわけにはいかないと思うので、これはVM/JIT方式だからこそできる方法でしょう。 * こめんと欄 #comment