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.