Professional Documents
Culture Documents
Outline
AM
LaCASA
Programming Registers
Type and Size of Operands
Addressing Modes
Types of Operations
Instruction Encoding
Role of Compilers
2
AM
LaCASA
What is ISA?
AM
LaCASA
Programming Registers
Operand Access
Type and Size of Operands
Instruction Set
Addressing Modes
Instruction Encoding
4
Classifying ISA
AM
LaCASA
register-memory:
access memory as part of any instruction
register-register:
access memory only with load and store instructions
5
TOS
Stack
Processor
Accumulator
Processor
...
...
Register-Memory
Processor
...
Register-Register
Processor
...
...
...
...
...
Memory
Memory
Memory
Memory
AM
LaCASA
A
B
Accumulator
Load
Add
Store
A
B
C
Register-Memory
Load
Add
Store
R1,A
R3,R1,B
C, R3
4 instr.
3 mem. op.
3 instr.
3 mem. op.
3 instr.
3 mem. op.
Load-store
Load
Load
Add
Store
R1,A
R2,B
R3,R1,R2
C,R3
4 instr.
3 mem. op.
AM
LaCASA
Development of ISA
AM
LaCASA
Programming Registers
AM
LaCASA
Operand Access
Number of operands
AM
LaCASA
Examples
2/3
2/3
VAX
10
Advantages
Disadvantages
MemMem
AM
(3,3)
LaCASA
Most compact.
AM
LaCASA
Addressing Modes
Memory addressing
AM
LaCASA
constants
registers
memory locations
I/O addresses
Big Endian
Little Endian
AM
LaCASA
Alignment
a
a+1
a+2
a+3
Big Endian
msb
lsb
31
0x00
0x00
0x01
0x03
0x02
0x01
0x02
0x03
msb
Little Endian
lsb
31
0
0x03
a
a+4
a+8
a+C
0x02
0x01
0x00
Aligned
Not Aligned
AM
LaCASA
15
Addressing
Modes:
Examples
Addr. mode
Example
Meaning
When used
Register
ADD R4,R3
Regs[R4] Regs[R4]+Regs[R3]
a value is in register
Immediate
ADD R4,#3
Regs[R4] Regs[R4]+3
for constants
Displacem.
ADD R4,100(R1)
Regs[R4]
Regs[R4]+Mem[100+Regs[R1]]
local variables
Reg. indirect
ADD R4,(R1)
Regs[R4] Regs[R4]+Mem[Regs[R1]]
accessing using a
pointer
Indexed
ADD R4,(R1+R2)
Regs[R4]
Regs[R4]+Mem[Regs[R1]+Regs[R2]]
Direct
ADD R4,(1001)
Regs[R4] Regs[R4]+Mem[1001]
Mem.
indirect
ADD R4,@(R3)
Regs[R4]
Regs[R4]+Mem[Mem[Regs[R3]]]
Autoincr.
ADD R4,(R3)+
Regs[R4] Regs[R4]+Mem[Regs[R3]]
Regs[R3] Regs[R3] + d
Regs[R3] Regs[R3] d
similar as previous
Autodecr.
AM
Scaled
LaCASA
ADD R4,-(R3)
Regs[R4] Regs[R4]+Mem[Regs[R3]]
ADD R4,100(R2)
[R3]
Regs[R4] Regs[R4] +
Mem[100+Regs[R2]+Regs[R3]*d]
to index arrays
16
Results
AM
LaCASA
75%
85%
17
Displacement
Immediate
AM
LaCASA
Loads:
Compares:
ALU operations:
All instructions:
AM
LaCASA
19
AM
LaCASA
Typical Operations
Data Movement
Arithmetic
AM
LaCASA
Shift
Logical
Control
Subroutine Linkage
System
Synchronization
Floating-point
String
Graphics
21
AM
LaCASA
Instruction
% total execution
load
22%
conditional
branch
20%
compare
16%
store
12%
add
8%
and
6%
sub
5%
move reg-reg
4%
call
1%
10
return
1%
Total
96%
22
AM
LaCASA
AM
LaCASA
AM
LaCASA
Balance among
AM
LaCASA
Address
specifier 1
Address
field 1
...
Address
specifier n
Address
field n
Address
field 1
Address
field 2
Address
field 3
AM
LaCASA
Operation
Address
specifier 1
Address
field 1
Operation
Address
specifier 1
Address
specifier 2
Address
field
Operation
Address
specifier
Address
field 1
Address
field 2
27
AM
LaCASA
Role of Compilers
1) Front-end
2) High-level optimizations
LaCASA
3) Global optimizer
AM
4) Code generator
Compiler Optimizations
1) High-level optimizations
2) Local optimizations
LaCASA
4) Register allocation
AM
3) Global optimizations
5) Processor-dependent optimizations