所以我试图将其转换为mips。
void swap (int *px, int *py) {
int temp;
temp = *px;
*px = *py;
*py = temp;
}
我认为它可能像
sll $t1, $a1, 2
add $t1, $a0, $t1
lw $t0, 0($t1)
lw $t2, 4($t1)
sw $t2, 0($t1)
sw $t0, 4($t1)
jr $ra
但我不允许使用临时注册。
我想我必须使用一些lw / sw命令,但我不知道你怎么做。
答案 0 :(得分:2)
有两个解决方案:
1)数学
void swap(int &x, int &y)
{
if(*x != *y)
{
x = x - y;
y = y + x;
x = y - x;
}
}
注意:请勿使用此方法。在某些情况下,它可能会导致溢出。
2) XOR (使用此)
void xorSwap (int *x, int *y)
{
if (x != y)
{
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
}
我离开了MIPS代码部分供您自己实现;)