Survey

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
```Name:_______________________
0) Compare zero-, one-, two-, and three-address machines by writing programs to compute
X = (A + B) / (D - E * B)
for each of the four machines. The instructions available for use are as follows:
MOVE (X b Y)
MOVE (X b Y)
ADD (X b Y + Z)
SUB (X b Y - Z)
MUL (X b Y * Z)
DIV (X b Y / Z)
ADD (X b X + Y)
SUB (X b X - Y)
MUL (X b X * Y)
DIV (X b X / Y)
(Accumulator machine)
STORE M
SUB M
MUL M
DIV M
(Stack machine)
PUSH M
POP M
SUB
MUL
DIV
Lecture 2 Page 1
Name:_______________________
1) How relocatable (i.e., can it be moved in memory) is the code in memory if direct addressing is used?
2) How many bits are needed to represent a direct address on a 32-bit machine?
3) From your programming experience, what range of Integer values would cover 90% of the constant Integer
4) How many binary bits would you need to represent this range of values?
5) What determines how many bits are needed to represent a register in a machine language instruction?
6) Which of the following programming language constructs would be good candidates for using PC-relative
a) conditional branch used when implementing loops
b) calling a subprogram
c) accessing a global variable
d) accessing a local variable
Lecture 2 Page 2
Name:_______________________
Type of Instruction
Memory Access
Move
Arithmetic Instruction
(reg. operands only)
Arithmetic with Immediates
(last operand must be an integer)
Conditional Branch
Unconditional Branch
and \$4, \$5, \$6
andi \$4, \$5, 0x5f
or \$4, \$5, \$6
ori \$4, \$5, 0x5f
xor \$4, \$5, \$6
xori \$4, \$5, 0x5f
nor \$4, \$5, \$6
not \$4, \$5
sll \$4, \$5, 3
sllv \$4, \$5, \$6
srl \$4, \$5, 3
srlv \$4, \$5, \$6
sra \$4, \$5, 3
srav \$4, \$5, \$6
rol \$4, \$5, 3
rol \$4, \$5, \$6
ror \$4, \$5, 3
ror \$4, \$5, \$6
MIPS
Assembly Language
lw \$4, Mem
sw \$4, Mem
lw \$4, 16(\$3)
sw \$4, Mem
move \$4, \$2
li \$4, 100
la \$5, mem
mul \$10, \$12, \$8
sub \$4, \$2, \$3
mul \$4, \$2, 100
bgt \$4, \$2, LABEL
(bge, blt, ble, beq, bne)
j LABEL
Register Transfer Language
Description
\$4b [Mem]
Memb\$4
\$4b [Mem at address in \$3 + 16]
[Mem at address in \$3 + 16]b \$4
\$4b \$2
\$4b 100
\$4b \$2 + \$3
\$10b \$12 * \$8 (32-bit product)
\$4b \$2 - \$3
\$4b \$2 + 100
\$4b \$2 * 100
(32-bit product)
Branch to LABEL if \$4 > \$2
Always Branch to LABEL
MIPS Logical Instructions
\$4b\$5 (bit-wise AND) \$6
\$4b\$5 (bit-wise AND) 5f16
\$4b\$5 (bit-wise OR) \$6
\$4b\$5 (bit-wise OR) 5f16
\$4b\$5 (bit-wise Exclusive-OR) \$6
\$4b\$5 (bit-wise Exclusive-OR) 5f16
\$4b\$5 (bit-wise NOR) \$6
\$4bNOT \$5
#inverts all the bits
MIPS Shift and Rotate Instructions
\$4bshift left \$5 by 3 positions. Shift in zeros (only least significant 5-bits of immediate
value are used to shift)
Similar to sll, but least significant 5-bits of \$6 determine the amount to shift.
\$4b shift right \$5 by 3 positions. Shift in zeros
Similar to srl, but least significant 5-bits of \$6 determine the amount to shift.
\$4bshift right \$5 by 3 positions. Sign-extend (shift in sign bit)
Similar to sra, but least significant 5-bits of \$6 determine the amount to shift.
\$4brotate left \$5 by 3 positions
Similar to above, but least significant 5-bits of \$6 determine the amount to rotate.
\$4brotate right \$5 by 3 positions
Similar to above, but least significant 5-bits of \$6 determine the amount to rotate.
Lecture 2 Page 3
Name:_______________________
Arithmetic with immediate: addi R1, R2, 8
opcode
dest
reg
opcode
operand operand
1 reg
2 reg unused
operand operand
1 reg
2 reg
immediate
value
Conditional Branch: beq R1, R2, end_if
Unconditional Branch/"jump": j someLabel
large offset from PC
opcode
opcode
operand operand PC-relative
1 reg
2 reg offset to label
opcode
operand base
reg
reg
offset from
base reg
MIPS Example
Fibonacci Sequence:
Position in Sequence:
0
0
1
1
1
2
2
3
3
4
5
5
8
6
13
7
21
8
A high-level language program to calculate the nth fibonacci number would be:
temp2 = 0
temp3 = 1
Trace of Program
(time
)
HLL
variables
for i = 2 to n do
temp4 = temp2 + temp3
temp2 = temp3
temp3 = temp4
end for
MIPS
registers
temp2
0
1
1
2
3
5
8
\$2
temp3
1
1
2
3
5
8
13
\$3
temp4
1
2
2
3
3
4
5
5
8
6
13
21
\$4
7
8
\$6
i
result = temp4
A complete assembly language MIPS program to calculate the nth fibonacci number.
.data
.word
.word
n:
result:
8
0
# variable in memory
# variable in memory
.text
.globl main
main:
for_loop:
li
li
lw
li
bgt
move
move
j
\$2, 0
\$3, 1
\$5, n # load "n" into \$5
\$6,
\$6, \$5, end_for
\$4, \$2, \$3
\$2, \$3
\$3, \$4
\$6, \$6, 1
for_loop
sw
\$4, result
end_for:
li
\$v0, 10
syscall
# system code for exit
Lecture 2 Page 4
```
Related documents