You are on page 1of 2

Homework 2 Solutions

2.12.1 (A) 38 bits

(B) 34 bits

2.12.2 (A) 36 bits

(B) 34 bits

2.24.1 (A) 0x0000 0012

(B) 0x0012 FFFF

2.24.2 (A) 0x0000 0080

(B) 0x0080 0000

2.24.3 (A) 0x0000 0011

(B) 0x0011 5555

2.26.1 (A) 2 Branch Instructions

(B) 1 Branch Instruction (Backwards)

2.26.2 (A) 1 Jump Instruction

(B) Not possible (Address out of 26 bit range)

2.26.3 (A) 10 Branch Instructions

(B) 1 Branch Instruction (Backwards)

2.31.1
(A)
Addresss
Text 0x00400000
0x0040004
...
0x00400140
0x00400144

Data 0x10000000

0x10000040

(B)
Instruction
lbu $a0, 0x8000($gp)
jal 0x004000140

sw $a1, 0x8040($gp)
jal 0x00400000
(X)

(Y)

Address
Text 0x00400000
0x00400004
0x00400084

0x00400140
0x00400144

0x004002C0

Data 0x10000000

0x10000040

Instruction
lui $at, 0x1000
ori $a0, $a, 0
jr $ra

sw $a0, 0x8040($gp)
jmp 0x004002C0

jal 0x00400000

(X)

(Y)

2.38.2
(A)

(B)

Loop
lh $t0, 0($a1)
sh $t0, 0($a0)
addi $a0, $a0, 2
addi $a1, $a1, 2
bgtz $a2, Loop
exit

Loop1
andi $t0, $a1, 0x000000FF
bne $t0, $a2, Loop2
j Loop 1
Loop2
addi $a2, $a2, 1
addi $a0, $a0, 1
bnez $a0, Loop1
exit

2.38.3
(A) 6/5 = 1.2 speed up

(B) 6/4 = 1.5 speed up

2.38.4
(A)
slt $t0, $a1, $a0
bnez $t0
move $v0, $a2
Greater_Than
move $v0, $a3
jr $ra

(B)
move $t0, $zero
Loop
addi $t0, $t0, 1
sw $zero, 0($a0)
add $a0, $a0, 4
bne $t0, $t1, Loop

2.40.4 (A) 10, 11, 12, 13, 14

(B) 100, 102, 104, 106, 108

2.40.5 (A) 10, 5, 0xFE8, 7, 1

(B) 100, 5, 0xFE8, 7, 1

2.40.6 (A) 1, 5, 7, 10, 0xFE8

(B) 1, 5, 7, 100, 0xFE8

You might also like