flat assembler
Message board for the users of flat assembler.
 Home   FAQ   Search   Register 
 Profile   Log in to check your private messages   Log in 
flat assembler > OS Construction > Undocumented "REAL" real mode x86 NOP opcodes

Author
Thread Post new topic Reply to topic
Mike Gonta



Joined: 26 Dec 2010
Posts: 180
Undocumented "REAL" real mode x86 NOP opcodes
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 real No 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

http://mikegonta.com
Post 26 Mar 2017, 14:36
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >

Forum Rules:
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


Powered by phpBB © 2001-2005 phpBB Group.

Main index   Download   Documentation   Examples   Message board
Copyright © 2004-2016, Tomasz Grysztar.