PVAL2

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;

メンバ

flag

変数の型が格納されます。 2 ならば文字列型、 4 ならば数値型です。それ以外の数値は無効な変数となります。

mode

変数が作成されたモードが格納されます。 0 ならば通常の変数、 1 ならば dup 命令で作成されたクローンの変数、 2 ならば alloc 命令または、大きなメモリ空間を確保している変数を 示しています。

len

配列のサイズについての情報が格納されています。dim p1, p2, p3, p4 とした場合に、 p1len[1] に、 p2len[2] に、 p3len[3] に、 p4len[4] の値となり保持されています。

size

これは将来のバージョンで使用するために確保されているものです。 ver2.5 現在は使用されていません。

pt

実際の変数の内容が記憶されているメモリへのポインタです。配列変数であれば、ここで指定されたアドレスから連続的な空間が配列のために確保されています。

変数との対応

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