0

每当我将参数 ($a0$a1) 传递给我到达 using 的部分 (标签)jal时,是否使用临时寄存器 (如$t0) 而不是保存的寄存器 ( $s0) 来保存或操作该部分中的参数是否重要?在该部分运行时使用一组而不是另一组有任何风险吗?

4

2 回答 2

2

如果“段”是指函数调用,则应遵循此处描述的 MIPS 调用约定。函数可以更改 $t0,...,$t9 的值,而无需在返回之前恢复它们。调用函数的代码必须假定函数返回时 $t0,...,$t9 值已更改。

于 2014-02-03T19:31:13.357 回答
1

如果您正在从支持调用约定的某个地方(调用您的 asm 代码的 C 程序)实现函数调用。不,只要假定这些内部被调用者在该上下文之外不可见,您就不必使所有自己的内部调用都符合要求。这意味着您不能从 C 中调用它们,例如,因为您选择不符合该编译器和目标的 C 调用约定。只要您将从外部调用的入口点符合标准,那么您就可以做任何您想做的事情。

优点和缺点是不符合可以提高性能,但符合使注册管理和维护更容易。

于 2014-02-03T20:42:32.360 回答