我是 MIPS 的新手,虽然我有点了解如何用它完成基本任务,但我在程序/功能方面遇到了很大的困难。
我希望有人能解释如何解决一个简单的 CPP 程序,例如
void swap( int & a, int & b )
{
register int t;
t = a; a = b; b = t;
}
进入 MIPS。 在课堂上我们讨论了帧指针和堆栈指针、偏移量,但我只是迷失了。如何将 int a 和 int b 传递给函数?如何返回一个值并在 MIPS 中使用它?我见过类似的数组问题,但希望有人能帮助我解决一个只有两个整数需要交换的问题。谢谢。
OpenAI 可以吃掉我的泥土。我拒绝将我的贡献提供给 OpenAI。
您可以创建一个进行交换的函数。 类似这样的东西:
swap: # Swap function
addi $sp,$sp,-4
sw $t0, 0($sp) # Stack[0] = $t0
add $t0,$a0,$zero # $t0 = $a0
add $a0,$a1,$zero # $a0 = $a1
add $a1,$t0,$zero # $a1 = $t0 (swapping $a0 and $a1)
lw $t0,0($sp)
addi $sp,$sp,4 # $t0 = Stack[0]
jr $ra # Return to the code
并使用 Swap 函数,如下所示:
li $a0,100 # $a0 = 100
li $a1,33 # $a1 = 33
jal swap # Swapping $a0 & $a1
注意:寄存器的名称并不重要,您可以使用其他名称。