複数のビットフィールドから 1、2、または 4 バイトのデータを作成します。これにより、データ領域をビット単位で初期化でき、またビットフィールド名でビット演算を行うことができます。
レコード型を宣言します。この文はレコード型(レコードタグ)を宣言するだけです。実際のレコードデータを作成するには、後述の「レコードデータ作成文」を改めて記述する必要があります。
構文 tag RECORD [field : bits] [= value]] 例 MTRX RECORD X:3,Y:3 MTRX RECORD X:3=5,Y:3=5+1
tag は必須です。field は、レコードフィールドの名前です。bits は、そのフィールドが占めるビット数です。value は、フィールドのデフォルトの初期値です。
以上の組は、カンマで区切っていくつでも指定できます。
定義されるデータ型は、フィールドの合計ビット幅が 8 ビット以下ならば 1 バイト、16 ビット以下ならば 2 バイト、32 ビット以下ならば 4 バイトになります。フィールドの合計ビット幅が 32 ビットを超えてはなりません。
レコード内部では、先に宣言されたフィールドほど上位のビットを占めます。最下位ビットは常に使用され、ビットが余る場合は上位ビットが使用されません。レコードフィールド名は通常の定数として使用でき、そのフィールドの最下位ビットの番号が値になります。
レコードフィールド名を利用するための演算子として、MASK 演算子と WIDTH 演算子が用意されています。
あらかじめ宣言したレコード型を使用して、実際のレコードデータを作成します。
構文 label tag < [value ,...] > ,... 例 ABC MTRX <> MTRX <> ABC MTRX <>,<>,<> ABC MTRX <7,8> ABC MTRX <7> ABC MTRX <,8> ABC MTRX 10 DUP(<>)
label は、このデータ領域に付けるラベルで、省略できます。
tag は、あらかじめ RECORD 文によって宣言しておいたレコード型名です。
value は、データ領域の初期値です。構造体の各フィールドに対応するデータを < > 内にカンマで区切って並べます。省略すると、レコード型宣言で指定したデフォルトの初期値が使用されます。初期値は山型括弧(< >)で囲む必要があります。