When assembling with the optimizer set to level 2 or higher, NASM will use size
specifiers (BYTE
, WORD
,
DWORD
, QWORD
, or TWORD
), but will give them the smallest possible size. The keyword
STRICT
can be used to inhibit optimization and force a particular
operand to be emitted in the specified size. For example, with the optimizer on, and in
BITS 16
mode,
push dword 33
is encoded in three bytes 66 6A 21
, whereas
push strict dword 33
is encoded in six bytes, with a full dword immediate operand 66
68 21 00 00 00
.