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

  • Thread starter mr_coffee
  • Start date
  • #1
1,629
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)?
 

Answers and Replies

  • #2
1,629
1
Yep it was correct
 

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

Replies
6
Views
3K
  • Last Post
Replies
4
Views
1K
  • Last Post
Replies
2
Views
5K
Replies
2
Views
13K
Replies
2
Views
5K
Replies
1
Views
760
  • Last Post
Replies
6
Views
1K
Replies
7
Views
1K
Replies
2
Views
1K
  • Last Post
Replies
3
Views
1K
Top