MIPS 32 ASM to C code, did i do this right?

  • Thread starter Thread starter mr_coffee
  • Start date Start date
  • Tags Tags
    C code Code Mips
AI Thread Summary
The MIPS 32 assembly code provided calculates the difference between two elements in an array B, where B's base address is in register $s0, and the indices are manipulated using the value in register $s2. The correct C statement derived from the assembly code is c = B[i + 2] - B[i], as the second load word instruction accesses B at an offset of 8 bytes, which corresponds to the index i + 2 in a 32-bit word array. The confusion arises from the interpretation of the index calculations, particularly the purpose of the two addition instructions that effectively double the index. The discussion clarifies that the assembly code is correctly understood as manipulating indices for accessing elements in the array. Overall, the assembly code translates to a specific C operation involving array indexing and subtraction.
mr_coffee
Messages
1,613
Reaction score
1
have the following MIPS 32 asm code:
Assuming B is an array of 10 words whose base address is in register $s0, andvariable c and i are in $s1 and $s2, respectively. What is the C statement implemented by the below MIPS assembly code?
add $t0, $s2, $s2
add $t0, $t0, $t0
lw $t1, 0($s0)
lw $t2, 8($s0)
sub $s1, $t2, $t1

In C what does it look like?
i said c = B[i+2] - B

but the other optpoins are:
c = B - B[i+2]
c = B - B[i+8]
c = B[i+8] - B

Can someone see if I'm correct?

lw $t2,8($s0);
I said was really index B[2] because, in mips memory is set up by 4's.
meaning

If i have memory set up like this:

[0x10ff00ff] 32
[0x00ff00ff] 28
[0x0000ffff] 24
[0xffff0000] 20
[0x000011ff]16
[0x10ffff00] 12
[0xff00ffff] 8
[0xff0000ff] 4
[0x0000ff44] 0
32 bit data and the numbers are word address

I'm confused on what the beginning codes prupose is for, the 2 add statements.
It basically does this i think:
$t0 = i + i;
$t0 = (i+i) + (i+i)?
 
Physics news on Phys.org
Yep it was correct
 

Similar threads

Replies
4
Views
5K
Replies
7
Views
3K
Replies
1
Views
2K
Replies
2
Views
5K
Replies
15
Views
2K
Replies
4
Views
6K
Replies
4
Views
1K
Back
Top