他のLispと同様に、型の決まったデータオブジェクトは変数ではない。
どの変数もその値として、どんなオブジェクトも持つことができる。
変数にオブジェクトの型を宣言することが可能であるが、
一般的にコンパイラで高速なコードを生成するための情報としてのみ
使用される。
数値は、ポインタの中で直接値として表現され、
そのほかは、ポインタにより参照されるオブジェクトにより表現される。
Sun4で実行する場合、ポインタおよび数値は図で描かれているように
long wordで表現される。
ポインタのLSBの2ビットは、ポインタ・integer・floatを識別するための
tagビットとして使用されている。
ポインタはtagビットが全てゼロであり、オブジェクトのアドレスとして32ビット全て
使用できるので、EusLispは4GB以上のアドレス空間を利用することができる。
Figure:
ポインタと直接値
|
Subsections
2016-04-05