1)look here http://en.wikipedia.org/wiki/Two's_complement 2) i have no idea 3) you have the right idea about adding in AA, but remember the loop. figure out what what its doing and when it's exiting 4) this one is confusing. he didn't say how to do it in class so i'm going to argue with him tomorrow. but there's only 4 numbers in each slot. you need one address and then another for the first two spaces. and the last space is the offset to get from the first to the last
Hmm... Interesting there... Looks challenging for me to find the solution. Haven't done MIPS for 3+ years... The memory allocation is somewhat confusing but not too difficult to learn. I have already forgotten all of them though. :(
#2 - If you use SPIM, you should see all the memory allocation in HEX and should be able to answer this question.
#3 li $v0, 0 li $t1, 0 li $t2, 0
loop: beq $t2, 6, endloop <-- branch to endloop if equal to 6 lb $ $v1, AA($t1) <-- load byte of the value in AA to $v1 addu $v0, $v0, $v1 <-- add unsigned value and store to $v0 addi $t2, $t2, 1 <-- loop counter (not really make sense to use this one) addi $t1, $t1, 1 <-- next slot in AA (could only use this one in loop checking) j loop
As a result, you are adding unsigned values, not only adding value of AA.
#4 - here is my guess... Memory Addresses 00000010 00405010 0000000C 0040500C 00000008 00405008 00000004 00405004 00000000 00405000
lui $s1, 0X____ <-- load the starting offset ori $s1, $s1, 0X__ <-- compute the offset lw $t1, 0X__($s1) <-- load 4 bytes to $t1 using the offset (look at Q2)