The opcodes for both movzbw and movzbl are OF B6
. I don't understand how they can be distinguished by observing the ModR/M byte. From the Intel 80386 Programmer's Reference Manual (1986):
MOVZX ── Move with Zero-Extend Opcode Instruction Clocks Description 0F B6 /r MOVZX r16,r/m8 3/6 Move byte to word with zero-extend 0F B6 /r MOVZX r32,r/m8 3/6 Move byte to dword, zero-extend 0F B7 /r MOVZX r32,r/m16 3/6 Move word to dword, zero-extend
How does the processor distinguish between and movzbw and movzbl?