The terms used to describe sizes in the x86 architecture are:
byte
: 8 bitsword
: 2 bytesdword
: 4 bytes (stands for "double word")qword
: 8 bytes (stands for "quad word")
This is somewhat at odds with the usual meaning of "word": the 16-bit nature of word
is a result of the evolution of x86 machines from their 16 bit origins, not a reflection of the natural word size of the machine. For compatibility reasons the size of a word
operand must always remain the same, even on a 64-bit machine.
Note that the variable i
in your program is 32 bits: you can see dword
size annotations in the relevant stack accesses. It may be instructive to recompile your program with the type of i
changed to long int
.