I got one of these manuals from Intel that describe opcodes in great detail. They list all the hex codes and what opcodes they translate. One thing is that the same first byte of the opcode can allow you to use both 16 and 32 bit registers and/or memory and they say that the operand-size attribute determines whether the register is 16 or 32 bits, yet they don't seem to explain what the operand-size attribute is or where it is. Does anyone know what it is, where it is, and how it works??
There is a prefix byte the determines the operad size. For example: 58 (HEX) is 'pop ax' in 16 bit modes of the processor, but in 32 bit modes it's 'pop eax' - to over-ride this and do the opposite of the current mode we'd prefix the instruction with a 66 (HEX) - this would override the 'Operand-size Attribute'. Sticking to byte or dword sizes in 32 bit mode saves bytes here and there :) Hope that helped explain things a little. Take care, bitRAKE.
I see. However, how do I know if the processor is in 32 bit mode??