将 C 程序转换为 MIPS 汇编
我有一个作业,但我不明白如何将 C 代码转换为汇编语言。
假设您有一个 12 的数组。重新排列数组的内容,使它们按从小到大排序(从 A[0] 到 A[12])。**
地址:12,8,4,0
数据:1、6、4、2
所以最终结果应该是: A[0]==1, A[4]==2, A[8]==4, A[12]==6
这是我的 C 代码:
int x, i=12;
while(A[i] < A[i-4])
{
x = A[i];
A[i] = A[i-4];
A[i-4] = x;
i -= 4;
}
所以现在我必须翻译该代码到 mips 但我被困住了。这就是我到目前为止所做的:
addi $t1, $t1, 12 #$t1 = i
sll $t0, $t1, 2
add $t0, $t0, $s6 #$s6 = A[]
lw $t2, 0($s6)
lw $t3, 4($s6)
lw $t4, 8($s6)
lw $t5, 12($s6)
loop:
slt $t6, $t5, $t4
bne $t6, 1 END
lw $t6, $t5
lw $t5, $t4
lw $t4, $t6
addi $t5, $t5, -4
addi $t4, $t4, -4
j loop
END
我知道这是不正确的,但我不知道如何让它发挥作用。
I have an assignment and I don't understand how to turn C code to assembly.
Suppose you have an array of 12. Rearrange the contents of the array so they are sorted from smallest to largest (from A[0] to A[12]).**
Address: 12, 8, 4, 0
Data: 1, 6, 4, 2
So the end result should be: A[0]==1, A[4]==2, A[8]==4, A[12]==6
This is my C code:
int x, i=12;
while(A[i] < A[i-4])
{
x = A[i];
A[i] = A[i-4];
A[i-4] = x;
i -= 4;
}
So now I have to translate that code to mips but I'm stuck. This is what I've made so far:
addi $t1, $t1, 12 #$t1 = i
sll $t0, $t1, 2
add $t0, $t0, $s6 #$s6 = A[]
lw $t2, 0($s6)
lw $t3, 4($s6)
lw $t4, 8($s6)
lw $t5, 12($s6)
loop:
slt $t6, $t5, $t4
bne $t6, 1 END
lw $t6, $t5
lw $t5, $t4
lw $t4, $t6
addi $t5, $t5, -4
addi $t4, $t4, -4
j loop
END
I know this isn't correct but I don't know how to make it work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论