There are a series of two byte opcodes (opcode byte plus MOD-REG-R/M byte) that have a MOD-R/M for a 32 bit register indirect addressing mode.
For example, one of these (of many) is add [eax], al and the encoding is 0x00, 0x00
In real mode this instruction (on a 80386 or better) requires an address override prefix byte (0x67) since there is no instruction for add [ax], al.
However, the encoding of 0x00, 0x00 is a perfectly valid instruction in real mode, and in fact is a true realNo OPeration.
Unlike xchg ax, ax aka 0x90 which is a valid operation (but for the fact that it has no effect and is thus classified as a NOP), the encoding of 0x00, 0x00
in real mode (without the address override prefix) not only doesn't add al to what ax (or eax) is pointing to but does absolutely nothing other than
advance the program counter.
Of course, these undocumented REAL real mode x86 NOP opcodes are (almost) totally useless.
I did however manage to save 3 bytes (which I didn't need) in my exFAT boot sector boot loader.
_________________ Mike Gonta
look and see - many look but few see
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum