Looking at some assembly code for x86_64 on my Mac, I see the following instruction:
48 c7 c0 01 00 00 00 movq $0x1,%rax
But nowhere can I find a reference that breaks down the opcode. It seems like 48c7 is a move instruction, c0 defines the %rax register, etc.
So, where can I find a reference that tells me all that?
I am aware of http://ref.x86asm.net/, but looking at 48 opcodes, I don’t see anything that resembles a move.
Actually,
movis 0xc7 there; 0x48 is, in this case, a long mode REX.W prefix.Answering also the question in comments: 0xc0 is b11000000. Here you can find out that with
REX.B = 0(as REX prefix is 0x48, the .B bit is unset), 0xc0 means “RAX is first operand” (in Intel syntax;mov rax, 1, RAX is first, or, in case ofmov, output operand). You can find out how to read ModR/M here.