如何实现MIPS方法

时间:2014-01-05 13:45:04

标签: methods mips spim

我可以创建一个方法并在数组上使用它吗?例如在java:bubbleSort(a)中这样,或者只有跳转到标签的东西才能实现?

2 个答案:

答案 0 :(得分:1)

查看jaljr$fp$sp和MIPS呼叫约定
是的,你不会摆脱标签的东西

答案 1 :(得分:0)

问题是你不能用高级语言思考方式来思考汇编。这是一个完全不同的世界。

你没有方法,你没有循环。你有条件分支和跳跃。忘记语言强加的执行控制 - 你已经回到了GOTO为王的土地。所以像@deviantfan说的那样,你将不得不适应jal(跳转和“链接”,即在$ra中保存PC)和jr $ra

你没有阵列。你甚至没有变量,不像HLL那样。范围的概念完全是外来的。你所拥有的就是寄存器,它们属于任何放入其中的东西。和内存位置,可由任何人编写。如果你想想那些变量,请记住它们都是全局变量。这就是提到的MIPS调用约定@deviantfan的用武之地。如果你编写一个函数(也就是用jal调用的代码块,以jr $ra结尾,那么你可以按照这些约定进行操作你不要把垃圾放在你的来电者的寄存器中。完全取决于你要确保你所写的数据符合你的意思,并且不会覆盖别人正在使用的内存位置。因为有也没有“字符串”的概念 - 只是一堆字节,可能包含从ASCII到浮点数字的任何类型的数据。

这就是计算机真正的工作方式。 HLL为您提供的所有其他功能只是抽象(也就是糖涂层),使编程更容易,更可靠。