DB
は1バイトを割り当てます。
DW
は2バイトを割り当てます。
DD
は4バイトを割り当てます。
DQ
は8バイトを割り当てます。
だから私はそれを仮定する:
RESB 1
は1バイトを割り当てます。
RESW 1
は2バイトを割り当てます。
RESD 1
は4バイトを割り当てます。
RESQ 1
は8バイトを割り当てます。
私は正しいですか?
documentation はあまり言いません:
3.2.2 RESBとフレンド:初期化されていないデータの宣言
RESB、RESW、RESD、RESQ、REST、RESO、RESY、およびRESZは、モジュールのBSSセクションで使用するように設計されています。これらは、初期化されていないストレージスペースを宣言します。それぞれが単一のオペランドを取ります。オペランドは、バイト数、ワード数、ダブルワード数、または予約するものです。セクション2.2.7で述べたように、NASMはDW?または同様のもの:これは代わりに行うことです。 RESBタイプの疑似命令のオペランドは重要な式です。セクション3.8を参照してください。
例えば:
バッファー:resb 64; 64バイトを予約する
wordvar:resw 1;言葉を予約する
realarray resq 10; 10個の実数の配列
ymmval:resy 1; 1つのYMMレジスタ
zmmvals:resz 32; 32個のZMMレジスタ
私は正しいですか?
はい。
d*
およびres*
の場合、サイズサフィックスはNASM全体で一貫しています。これらは、byte to qwordのx86命令ニーモニックサフィックスに一致します。 (例:psubd
はパックされたdword要素で動作します)。
o
(oct-Word)を使用する命令ニーモニックさえあります: cqo
。
aVX512マスキング粒度により、命令ニーモニックが VBROADCASTI32X8
のようなものになったとしても、yおよびzサイズのサフィックスは明らかにymmおよびzmmレジスタサイズと一致します。