Specifications
Intel
®
Quark Core—Architectural Overview
Intel
®
Quark SoC X1000 Core
Developer’s Manual October 2013
26 Order Number: 329679-001US
3.5.2 Register and Immediate Modes
The following two addressing modes provide for instructions that operate on register or
immediate operands:
• Register Operand Mode: The operand is located in one of the 8-, 16- or 32-bit
general registers.
• Immediate Operand Mode: The operand is included in the instruction as part of the
opcode.
3.5.3 32-Bit Memory Addressing Modes
The remaining modes provide a mechanism for specifying the effective address of an
operand. The linear address consists of two components: the segment base address
and an effective address. The effective address is calculated by using combinations of
the following four address elements:
• DISPLACEMENT: An 8-, or 32-bit immediate value, following the instruction.
• BASE: The contents of any general purpose register. The base registers are
generally used by compilers to point to the start of the local variable area.
• INDEX: The contents of any general purpose register except for ESP. The index
registers are used to access the elements of an array, or a string of characters.
• SCALE: The index register's value can be multiplied by a scale factor, either 1, 2, 4
or 8. Scaled index mode is especially useful for accessing arrays or structures.
Combinations of these 4 components make up the 9 additional addressing modes.
There is no performance penalty for using any of these addressing combinations,
because the effective address calculation is pipelined with the execution of other
instructions. The one exception is the simultaneous use of Base and Index components,
which requires one additional clock.
As shown in Figure 3, the effective address (EA) of an operand is calculated according
to the following formula:
EA = Base Reg + (Index Reg * Scaling) + Displacement
Direct Mode: The operand’s offset is contained as part of the instruction as an 8-, 16-
or 32-bit displacement.
Example: INC Word PTR [500]
Register Indirect Mode: A BASE register contains the address of the operand.
Example: MOV [ECX], EDX
Based Mode: A BASE register's contents is added to a DISPLACEMENT to form the
operand's offset.
Example: MOV ECX, [EAX+24]
Index Mode: An INDEX register’s contents is added to a DISPLACEMENT to form the
operand's offset.
Example: ADD EAX, TABLE[ESI]
Scaled Index Mode: An INDEX register's contents is multiplied by a scaling factor
which is added to a DISPLACEMENT to form the operand's offset.
Example: IMUL EBX, TABLE[ESI*4],7
Based Index Mode: The contents of a BASE register is added to the contents of an
INDEX register to form the effective address of an operand.
Example: MOV EAX, [ESI] [EBX]










