What does "r / m8" mean when used in command coding tables?
The documentation ADD
from this page contains the following table with different encodings:
I believe that imm8
means an immediate value that is 8 bits in size (ex:) BYTE 123
.
And I believe that r32
is the register, the size of which is 32 bits (for example EAX
)
But what does it mean r/m8
? Does this mean that I can use an 8 bit register (ex:) AL]
or memory that is 8 bits (ex:) BYTE [myvar]
?
source to share
This web page is a html conversion of Intel official documentation. You should read this instead, especially since it has section 3.1.1.3 Command Column in the Opcode Summary Table which says:
r / m8 is a byte operand that is either the contents of a general register byte (AL, CL, DL, BL, AH, CH, DH, BH, BPL, SPL, DIL, and SIL) or a byte from memory. Byte registers R8L-R15L are accessible using REX.R in 64-bit mode.
So, yes, that means what you said.
source to share