Intel 64 and IA-32 Architectures Software Developers Manual Volume 1, Basic Architecture
Vol. 1 1-5
ABOUT THIS MANUAL
1.3.2 Reserved Bits and Software Compatibility
In many register and memory layout descriptions, certain bits are marked as
reserved. When bits are marked as reserved, it is essential for compatibility with
future processors that software treat these bits as having a future, though unknown,
effect. The behavior of reserved bits should be regarded as not only undefined, but
unpredictable.
Software should follow these guidelines in dealing with reserved bits:
• Do not depend on the states of any reserved bits when testing the values of
registers that contain such bits. Mask out the reserved bits before testing.
• Do not depend on the states of any reserved bits when storing to memory or to a
register.
• Do not depend on the ability to retain information written into any reserved bits.
• When loading a register, always load the reserved bits with the values indicated
in the documentation, if any, or reload them with values previously read from the
same register.
NOTE
Avoid any software dependence upon the state of reserved bits in
Intel 64 and IA-32 registers. Depending upon the values of reserved
register bits will make software dependent upon the unspecified
manner in which the processor handles these bits. Programs that
depend upon reserved values risk incompatibility with future
processors.
1.3.2.1 Instruction Operands
When instructions are represented symbolically, a subset of the IA-32 assembly
language is used. In this subset, an instruction has the following format:
label: mnemonic argument1, argument2, argument3
where:
• A label is an identifier which is followed by a colon.
• A mnemonic is a reserved name for a class of instruction opcodes which have
the same function.
• The operands argument1, argument2, and argument3 are optional. There
may be from zero to three operands, depending on the opcode. When present,
they take the form of either literals or identifiers for data items. Operand
identifiers are either reserved names of registers or are assumed to be assigned
to data items declared in another part of the program (which may not be shown
in the example).
When two operands are present in an arithmetic or logical instruction, the right
operand is the source and the left operand is the destination.