Tutorial 3

Q1
a)
Load Upper immediate (LUI) $t0, 0xFF
OR $s0, $s0 , $t0

We load upper immediate because we cannot apply ori on the first 16 bits. Ori is i format and only takes 16 bits but the one we want is 32 bits.

b)
XORI $s0, $s0, 0xFF00
If its different, its true 
if its the same, its false

c)
andi $t0, $s0, 0xFF
//this is to mask it first because to shift we dont want to affect the other bits when we shift it
xor $s0, $s0, $t0 //we can clear the zero bits here because its the same
srl $t0, 1
//We can shift right shift left to clear the bits but its too much step 
or $s0,$s0,$t0

Q2
a)
addi $t2, $zero,2
div $t1, $r2
MFLO $t1 

b)
srl $t1,$t1,1
For signed, if there's a 4 bit number (1110) and we shift right, it will extend the sign

c)
Yes.

Q3
a) srl $s4, $s4, 1
b) lw $t1, 0($t0)
c) slt $t9, $t1, $s1 //sne $t9,$s1,$t1 (Check if its equal)
beq $t9, $zero, equal
d) j end
e) j loop

Q4
a)
1. $t1 = 108
$s1 = 108
$t0 = 124

2. $t1 = 104
$s1 = 108 + 104 =212
$t0 = 100

3. $t1 = 120
$s1= 212 + 120 = 332
$t0 = 132

//we jump one blcok each time
b) memory address for 104 should change to 0
c) Linked list