HSP が管理している変数についてのさまざまな情報が格納されます。1つの変数につき、1つの構造体が存在します。この構造体のデータは、 mref 命令を用いて取得することができます。
typedef struct PVAL2 { short flag; // type of val short mode; // mode (0=normal/1=clone/2=alloced) int len[5]; // length of array 4byte align (dim) int size; // size of Val (not used) char *pt; // (direct val) or (ptr to array) } PVAL2;
変数の型が格納されます。 2 ならば文字列型、 4 ならば数値型です。それ以外の数値は無効な変数となります。
変数が作成されたモードが格納されます。 0 ならば通常の変数、 1 ならば dup 命令で作成されたクローンの変数、 2 ならば alloc 命令または、大きなメモリ空間を確保している変数を 示しています。
配列のサイズについての情報が格納されています。dim p1, p2, p3, p4 とした場合に、 p1 が len[1] に、 p2 が len[2] に、 p3 が len[3] に、 p4 が len[4] の値となり保持されています。
これは将来のバージョンで使用するために確保されているものです。 ver2.5 現在は使用されていません。
実際の変数の内容が記憶されているメモリへのポインタです。配列変数であれば、ここで指定されたアドレスから連続的な空間が配列のために確保されています。
HSP 変数 | メンバ | ||
---|---|---|---|
メンバ名 | オフセット | サイズ | |
pval.0 | flag | 0 | 2 |
mode | 2 | 2 | |
pval.1 | len[0] | 4 | 4 |
pval.2 | len[1] | 8 | 4 |
pval.3 | len[2] | 12 | 4 |
pval.4 | len[3] | 16 | 4 |
pval.5 | len[4] | 20 | 4 |
pval.6 | size | 24 | 4 |
pval.7 | pt | 28 | 4 |