Académique Documents
Professionnel Documents
Culture Documents
J. Stanley Warford
Instruction
Specifier
Mnemonic
Instruction
Addressing
Modes
Status
Bits
0000 0000
0000 0001
0000 0010
0000 0011
STOP
RETTR
MOVSPA
MOVFLGA
Stop execution
Return from trap
Move SP to A
Move NZVC flags to A
U
U
U
U
0000 010a
0000 011a
0000 100a
0000 101a
0000 110a
0000 111a
0001 000a
0001 001a
0001 010a
0001 011a
BR
BRLE
BRLT
BREQ
BRNE
BRGE
BRGT
BRV
BRC
CALL
Branch unconditional
Branch if less than or equal to
Branch if less than
Branch if equal to
Branch if not equal to
Branch if greater than or equal to
Branch if greater than
Branch if V
Branch if C
Call subroutine
i, x
i, x
i, x
i, x
i, x
i, x
i, x
i, x
i, x
i, x
0001 100r
0001 101r
0001 110r
0001 111r
0010 000r
0010 001r
NOTr
NEGr
ASLr
ASRr
ROLr
RORr
Bitwise invert r
Negate r
Arithmetic shift left r
Arithmetic shift right r
Rotate left r
Rotate right r
U
U
U
U
U
U
0010 01nn
0010 1aaa
NOPn
NOP
U
i
0011 0aaa
0011 1aaa
0100 0aaa
0100 1aaa
0101 0aaa
DECI
DECO
STRO
CHARI
CHARO
0101 1nnn
RETn
0110 0aaa
0110 1aaa
ADDSP
SUBSP
NZVC
NZVC
0111 raaa
1000 raaa
1001 raaa
1010 raaa
1011 raaa
ADDr
SUBr
ANDr
ORr
CPr
Add to r
Subtract from r
Bitwise AND to r
Bitwise OR to r
Compare r
NZVC
NZVC
NZ
NZ
NZVC
1100 raaa
1101 raaa
1110 raaa
1111 raaa
LDr
LDBYTEr
STr
STBYTEr
NZ
NZ
NZ
NZV
NZVC
NZC
C
C
NZV
aaa
1/27/09
J. Stanley Warford
7:04 PM
Addressing mode
Page 285
Addressing mode
Register
000
Immediate
0
Immediate
0
Accumulator, A
001
Direct
1
Indexed
1
Index register, X
010
Indirect
6.4 Indexed Addressing and Array
011
Stack-relative
(b) The addressing-a field.
(c) The register-r field.
100
Stack-relative deferred
101column
Indexed
labeled Letters shows the assembly language designation for the addressing
110
Stack-indexed
mode at level Asmb5. The column labeled Operand shows how the CPU determines
111
Stack-indexed deferred
Addressing Mode
aaa
Letters
Immediate
Direct
Indirect
Stack-relative
Stack-relative deferred
Indexed
Stack-indexed
Stack-indexed deferred
000
001
010
011
100
101
110
111
i
d
n
s
sf
x
sx
sxf
Operand
Figure 6.33
Mem
0000
Application
program
The C++ program in Figure 6.34 is the same as the one in Figure 2.15 (page 46),
except that the variables are global instead
of local. It shows a program at level
Heap
HOL6 that declares a global array of four integers named vector and a global integer named j. The main program inputs four
integers into the array with a for loop
User stack
and outputs them in reverse order together with their indexes.
FBCF
High-Order Language
#include <iostream>
using namespace std;
FC4F
FC57
int vector[4];
int j;
FC9B
System
stack
I/O buffer
Loader
Trap
int main () {
handler
for (j = 0; j < 4; j++) {
cin >> vector[j];
FFF8
FBCF
FFFA
FC4F
}
FFFC
FC57
for (j = 3; j >= 0; j--) {
FFFE
FC9B
cout << j << ' ' << vector[j] << endl;
}
return 0;
}
Figure 6.34
A global array.
Mnemonic
STOP
Stop execution
NZVC Mem[SP] !4..7" ; A Mem[SP + 1] ; X Mem[SP + 3] ;
PC Mem[SP + 5] ; SP Mem[SP + 7]
A SP
A !0..11" 0 , A!12..15" NZVC
RETTR
MOVSPA
MOVFLAGA
PC Oprnd
N ! 1 Z ! 1 PC Oprnd
N ! 1 PC Oprnd
Z ! 1 PC Oprnd
Z ! 0 PC Oprnd
N ! 0 PC Oprnd
N ! 0 Z ! 0 PC Oprnd
V ! 1 PC Oprnd
C ! 1 PC Oprnd
SP SP " 2 ; Mem[SP] PC ; PC Oprnd
BR
BRLE
BRLT
BREQ
BRNE
BRGE
BRGT
BRV
BRC
CALL
r r ; N r < 0 , Z r ! 0
r "r ; N r < 0 , Z r ! 0 , V {overflow}
C r !0" , r !0..14" r !1..15" , r !15" 0 ; N r < 0 , Z r ! 0 , V {overflow}
C r !15" , r !1..15" r !0..14" ; N r < 0 , Z r ! 0
C r !0" , r !0..14" r !1..15" , r !15" C
C r !15" , r !1..15" r !0..14" , r !0" C
NOTr
NEGr
ASLr
ASRr
ROLr
RORr
NOPn
NOP
32397_App_A1_A08
DECI
DECO
STRO
CHARI
A8
J. Stanley Warford
A7
CHARO
Appendix
Pep/8 Architecture
RETn
SP SP + n ; PC Mem[SP] ; SP SP + 2
ADDSP
Mnemonic
SUBSP
ADDr
SUBr
ANDr
ORr
CPr
LDr
LDBYTEr
STr
STBYTEr
Trap
A.11
(Continued)
J. Stanley Warford
Char
Bin
Hex
Char
Bin
Hex
Char
Bin
Hex
Char
Bin
Hex
NUL
SOH
STX
ETX
000 0000
000 0001
000 0010
000 0011
00
01
02
03
SP
!
"
#
010 0000
010 0001
010 0010
010 0011
20
21
22
23
@
A
B
C
100 0000
100 0001
100 0010
100 0011
40
41
42
43
`
a
b
c
110 0000
110 0001
110 0010
110 0011
60
61
62
63
EOT
ENQ
ACK
BEL
000 0100
000 0101
000 0110
000 0111
04
05
06
07
$
%
&
'
010 0100
010 0101
010 0110
010 0111
24
25
26
27
D
E
F
G
100 0100
100 0101
100 0110
100 0111
44
45
46
47
d
e
f
g
110 0100
110 0101
110 0110
110 0111
64
65
66
67
BS
HT
LF
VT
000 1000
000 1001
000 1010
000 1011
08
09
0A
0B
(
)
*
+
010 1000
010 1001
010 1010
010 1011
28
29
2A
2B
H
I
J
K
100 1000
100 1001
100 1010
100 1011
48
49
4A
4B
h
i
j
k
110 1000
110 1001
110 1010
110 1011
68
69
6A
6B
FF
CR
SO
SI
000 1100
000 1101
000 1110
000 1111
0C
0D
0E
0F
,
.
/
010 1100
010 1101
010 1110
010 1111
2C
2D
2E
2F
L
M
N
O
100 1100
100 1101
100 1110
100 1111
4C
4D
4E
4F
l
m
n
o
110 1100
110 1101
110 1110
110 1111
6C
6D
6E
6F
DLE
DC1
DC2
DC3
001 0000
001 0001
001 0010
001 0011
10
11
12
13
0
1
2
3
011 0000
011 0001
011 0010
011 0011
30
31
32
33
P
Q
R
S
101 0000
101 0001
101 0010
101 0011
50
51
52
53
p
q
r
s
111 0000
111 0001
111 0010
111 0011
70
71
72
73
DC4
NAK
SYN
ETB
001 0100
001 0101
001 0110
001 0111
14
15
16
17
4
5
6
7
011 0100
011 0101
011 0110
011 0111
34
35
36
37
T
U
V
W
101 0100
101 0101
101 0110
101 0111
54
55
56
57
t
u
v
w
111 0100
111 0101
111 0110
111 0111
74
75
76
77
CAN
EM
SUB
ESC
001 1000
001 1001
001 1010
001 1011
18
19
1A
1B
8
9
:
;
011 1000
011 1001
011 1010
011 1011
38
39
3A
3B
X
Y
Z
[
101 1000
101 1001
101 1010
101 1011
58
59
5A
5B
x
y
z
{
111 1000
111 1001
111 1010
111 1011
78
79
7A
7B
FS
GS
RS
US
001 1100
001 1101
001 1110
001 1111
1C
1D
1E
1F
<
=
>
?
011 1100
011 1101
011 1110
011 1111
3C
3D
3E
3F
\
]
101 1100
101 1101
101 1110
101 1111
5C
5D
5E
5F
|
}
~
DEL
111 1100
111 1101
111 1110
111 1111
7C
7D
7E
7F
FF
CR
SO
SI
form feed
carriage return
shift out
shift in
CAN
EM
SUB
ESC
cancel
end of medium
substitute
escape
EOT
ENQ
ACK
BEL
end of transmission
enquiry
acknowledge
bell
DLE
DC1
DC2
DC3
FS
GS
RS
US
file separator
group separator
record separator
unit separator
BS
HT
LF
VT
backspace
horizontal tabulation
line feed
vertical tabulation
DC4
NAK
SYN
ETB
device control 4
negative acknowledge
synchronous idle
end of transmission block
space
SP
DEL delete
J. Stanley Warford
ALU
ALU
Cin
Cout
V
Zout
N
Result
ALU control
(dec)
(bin)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Result
Status bits
Zout
V
Cout
A
A plus B
A plus B plus Cin
A plus B plus 1
A plus B plus Cin
A!B
A!B
A+B
A+B
A!B
A
ASL A
ROL A
ASR A
ROR A
0
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
A<4>
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
Z
A<5>
0
C
C
C
C
0
0
0
0
0
0
C
C
C
C
A<7>
0
V
V
V
V
0
0
0
0
0
0
V
0
0
0
A<6>
J. Stanley Warford
1
IR
A
2
14
15
16
17
18
19
22
M1 0x00
24
M2 0x02
26
M3 0x04
28
M4 0xFA
30
M5 0xFE
T3
10
T4
X
4
11
SP
T5
T1
6
12
PC
20
13
21
T6
T2
CPU registers
CBus
Bus
ABus
23
0x01
25
0x03
27
0x08
29
0xFC
31
0xFF
LoadCk
5
5
5
C
B
A
BBus
MARB
MARCk
MARA
MDRCk
MDR
MDRMux
AMux
AMux
MDRMux
ALU
Cin
CMux
CMux
ALU
Cout
Mem
CCk
VCk
ANDZ
Addr
Zout
Data
0
0
0
0
ANDZ
ZCk
NCk
MemWrite
MemRead
J. Stanley Warford
Bus
Incrementer
MARInc
MARB
MARA
71447_CH12_Chapter12.qxd
618
Chapter
12
1/28/09
1:27 AM
BBus
MARCk
ABus
Page 618
Computer Organization
CBus
ABus
BBus
MARMux
MARB
MARA
MARMux
Bus
MARCk
MDR1Ck
MDR1
MDR1Mux
MDR1Mux
MDR0Ck
MDR0
MDR0Mux
01Mux
01Mux
MDR0Mux
AMux
AMux
Figure 12.19
temporary register T3 is to hold the address fetched from memory on its way to the
MAR. If there were a 16-bit data path directly from MDR to MAR, you could save
all those cycles getting the address to T3 and then back to the MAR.
In Figure 12.19, there are two MDR registersMDR0 for holding the content
of a byte at an even address, and MDR1 for holding a byte at an odd address. Each
one can be loaded from the CBus through its own multiplexer. An additional multiplexer labeled 01Mux selects which MDR is injected into the main data path of the
data section. As usual, a zero on the 01Mux control line routes MDR0 through the
71447_CH12_Chapter12.qxd
2/3/09
8:35 PM
Page 628
628
Chapter
J. Stanley Warford
12 Computer Organization
Figure 12.27
Mnemonic
Meaning
add
addi
sub
and
andi
Add
Add immediate
Subtract
Bitwise AND
Bitwise AND
immediate
Bitwise OR
Bitwise OR
immediate
0000
0010
0000
0000
0011
Load byte
Load word
Load upper
immediate
Store byte
Store word
Branch if equal to
Branch if greater
than or equal to
zero
Branch if greater
than zero
Branch if less
than or equal
to zero
Branch if less
than zero
Branch if not
equal to
Jump
(unconditional
branch)
or
ori
sll
sra
srl
lb
lw
lui
sb
sw
beq
bgez
bgtz
blez
bltz
bne
j
00ss
00ss
00ss
00ss
00ss
ssst
sssd
ssst
ssst
sssd
tttt
dddd
tttt
tttt
dddd
dddd
iiii
dddd
dddd
iiii
d000
iiii
d000
d000
iiii
0010
iiii
0010
0010
iiii
0000
iiii
0010
0100
iiii
and rd is the destination register that gets the sum. The field named shamt is shift
amount, which is used in the shift instructions and not applicable to the add instruction. The field named funct is a function field used in conjunction with the opcode
field to specify the operation. This addressing mode is called register addressing for
obvious reasons.
A few instructions fr
instruction set.
Computer
Systems,
Fourth
32397_CH12_595_664
1/14/09
6:45 PM
PageEdition
629
op
r aaa
operand specifier
8
J. Stanley Warford
16
1/14/09
6:45 PM
Page 632
12.3
rd rs + rt
629
rs
rt
rd
shamt
funct
Computer Organization
Figure 12.28
store instructions. In the MIPS machine, memory is byte addressable, words are 32
op
r aaa
specifier
Example
12.3
Assuming
theoperand
C++
compiler
associates
$s0 with
i,
bits
long, and
word
data are that
aligned
to memory
addresses
divisible
by variable
four. Two
$s1
with
array
a,
and
$s2
with
variable
g
,
it
translates
the
statement
instructions for accessing memory are:
8
16
lw (b)
forPep/8
loadgeneral
word addressing.
g = a[i];
sw for store word
into MIPS
assembly
language
The RTL
specification
of as
thefollows.
add instruction is
Figure 12.29 shows the MIPS instruction format for the lw instruction. rb is
called
is the
destination
rdthe
base
rs + register
rt
sll $t0,$s0,2
# and
$t0 rd
gets
$s0
times 4 register.
add $t0,$s1,$t0
# $t0 gets the address of a[i]
6
5assembly
5language statement is16
The$s2,0($t0)
corresponding
MIPS
lw
# $s2
gets a[i]
Figure 12.29
add rd,rs,rt
op address field
rb
Note the 0 in the
of therdload instruction. address
instructions with base addressing.
The order of the operands in assembly language is different from their order in
32 immediate addressing mode. There is a
Like language.
Pep/8, the MIPS machine has an
machine
special
version
of theofadd
instruction
with is
mnemonic
addi, whichare
stands
A key
principle
load/store
machines
that all computations
donefor
on add
valimmediate.
Figure
12.30
shows
the
instruction
format
for
immediate
addressing.
It
ues in registers. You cannot add a value from memory to a value in a register with
has
the
same
structure
as
the
base
addressing
mode
of
Figure
12.29,
except
that
the
one instruction. You must first load the value into another register and then add the
16-bit
field is used
for the
immediate
operand instead
of anmemory
address offset.
two registers
together.
The
only instructions
that access
are the load and
store instructions. In the MIPS machine, memory is byte addressable, words are 32
bits long, and 6word data 5are aligned
5 to memory addresses
16 divisible by four. Two Figure 12.30
instructions for accessing memory are:
op
lw
sw
rs
rd
immediate
32
Figure 12.29 shows the MIPS instruction format for the lw instruction. rb is
called the base register and rd is the destination register.
Example 12.4 To allocate four bytes of storage on the run-time stack, you would
6
5
5
16
execute
op
addi $sp,$sp,-4
address
32 operand. The machine language transwhere 4 is not an address but the immediate
lation is
001000 11101 11101 1111111111111100
Figure 12.29
J. Stanley Warford
PC
JMux
32
PCMux
L1 instruction cache
4
Address
Instruction
Plus4
IF
Instruction Fetch
28
address
26
ASL2
address
Decode instruction
16
C
B
Sign extend
Register bank
CBus
ID
Instruction Decode/Register File
Read
ABus
32
BBus
AMux
ASL2
Ex
Execute/Address Calculation
Adder
ALU
L1 data cache
Data in
Address
Mem
Memory Access
Data out
CMux
WB
Write Back
J. Stanley Warford
JMux
PC
PCMux
L1 instruction cache
Address
Plus4
Instruction
address
IF
Instruction Fetch
ASL2
IF/ID registers
address
Decode instruction
C
ID
Instruction Decode/Register File
Read
B
Sign extend
Register bank
CBus
ABus
BBus
ID/Ex registers
AMux
ASL2
Ex
Execute/Address Calculation
Adder
ALU
Ex/Mem registers
L1 data cache
Data in
Address
Mem
Memory Access
Data out
Mem/WB registers
CMux
WB
Write Back