CH09.1-Instruction Sets_ Addressing Modes and Formats (1)
CH09.1-Instruction Sets_ Addressing Modes and Formats (1)
Addressing Modes 3 4
Immediate
Direct
Indirect
Register
Register indirect
Displacement
Stack
5
+ Immediate Addressing 6
Table 13.1
Basic Addressing Modes Simplest form of addressing
Operand = A
This mode can be used to define and use constants or set initial
values of variables
Typically the number will be stored in twos complement form
The leftmost bit of the operand field is used as a sign bit
Advantage:
No memory reference other than the instruction fetch is required to
obtain the operand, thus saving one memory or cache cycle in the
instruction cycle
Disadvantage:
The size of the number is restricted to the size of the address field, which,
in most instruction sets, is small compared with the word length
Direct Addressing 7
+ 8
Indirect Addressing
Address field
contains the
effective address of Reference to the address of a word in memory which contains a
the operand full-length address of the operand
Effective address
(EA) = address field
EA = (A)
(A) Parentheses are to be interpreted as meaning contents of
Advantage:
Was common in For a word length of N an address space of 2N is now available
earlier generations
of computers
Disadvantage:
Instruction execution requires two memory references to fetch the operand
One to get its address and a second to get its value
Requires only one
memory reference
and no special A rarely used variant of indirect addressing is multilevel or cascaded
calculation indirect addressing
EA = ( . . . (A) . . . )
Limitation is that it
provides only a Disadvantage is that three or more memory references could be required
limited address to fetch an operand
space
Register Addressing
9
+ 10
+ 11
Relative Addressing
12
Displacement Addressing
Combines the capabilities of direct addressing and register The implicitly referenced register is the program counter (PC)
indirect addressing
EA = A + (R) • The next instruction address is added to the address field to produce the EA
• Typically the address field is treated as a twos complement number for this
Requires that the instruction have two address fields, at least one operation
of which is explicit • Thus the effective address is a displacement relative to the address of the
The value contained in one address field (value = A) is used directly instruction
The other address field refers to a register whose contents are added
to A to produce the effective address
Exploits the concept of locality
Most common uses:
Relative addressing
Base-register addressing Saves address bits in the instruction if most memory references
Indexing are relatively near to the instruction being executed
+ 13
Indexing
14
Base-Register Addressing
The address field references a main memory address and the referenced
register contains a positive displacement from that address
Postindexing
In some implementations a single segment base register is Indexing is performed after the indirection
employed and is used implicitly EA = (A) + (R)
+ 15 16
Stack Addressing
Associated with the stack is a pointer whose value is the address of the top of
the stack
The stack pointer is maintained in a register
Thus references to stack locations in memory are in fact register indirect addresses
Branch instructions
The only form of addressing for branch instructions is immediate
Instruction contains 24 bit value
Shifted 2 bits left so that the address is on a word boundary
Effective range ± 32MB from from the program counter
Instruction Formats 21
+ 22
Instruction Length
Most basic design issue
Allocation of Bits
23 24
Number of Register
Number of
addressing versus
operands
modes memory
Variable-Length Instructions
27 28
29 30
31 32
+ 33 34
Delivers overall code density comparable with Thumb, together with the
performance levels associated with the ARM ISA
Before Thumb-2 developers had to choose between Thumb for size and
ARM for performance
35
+ Summary Instruction Sets:
36
Addressing Modes
and Formats
Chapter 13
x86 addressing modes
Addressing modes
ARM addressing modes
Immediate addressing
Direct addressing Instruction formats
Indirect addressing Instruction length
Register addressing Allocation of bits
Register indirect addressing Variable-length instructions
Displacement addressing
X86 instruction formats
Stack addressing
ARM instruction formats
Assembly language