next up previous contents index
Next: 述語 Up: 実装レベルのデータ Previous: ヒープ

モジュール

 

KL1のモジュールは、KLIC中ではC関数 として実装されている。よって、Cレベルでは、その関数へのポインタが「モジュール」 を表現するものとして使われている。

この関数は関数型module として定義されている。この module 型は、「module 型関数へのポインタを返す 関数」としてinclude/klic/struct.h中で定義されている。よって、本来は、 typedef module *(module)() のように定義することが 望まれるが、このような自己再帰的な関数記述はC言語では許されず、 typedef char *(module)() と定義されている。 なお、KL1言語レベルで利用されるモジュール型データは これをさらにジェネリック・オブジェクトで隠蔽したものである。

実際のモジュールを表現する関数は通常KLICのコンパイラが生成し、 リンクする。 また、関数のアドレスは、long intと同じalignmentとなることが期待されている。 つまり、下位2bitは共にゼロであることが期待されている。



Sekita Daigo
1998-05-18