我可以在MIPS中使用$ PC吗?

时间:2011-11-03 05:09:31

标签: mips

据我所知,程序计数器,$ PC对用户是隐藏的。它不是32个寄存器之一。

我想执行以下操作,而不是使用jal

$ra <= PC + 4
j my_function
# instead of jal my_function

可以这样做吗?我知道JAIL是一个宏。

如何在不使用JAL的情况下跳转到某个函数并能够返回到调用者的下一条指令?感谢。

谢谢!


  

在代码中“发现”PC的一种支持方法是使用JAL   零偏移(跳转/链接到下一条指令),然后读取   R31中的PC。

尝试:

..statements before jump...
jal $0
addi $t3, $ra, 4
..statements when function returns..

我最终陷入了无限循环。

1 个答案:

答案 0 :(得分:2)

做JAL找出PC是没用的,因为你可以使用那个JAL进行跳转......一种方法是使用LA伪指令,如:

la $ra, current
addiu $ra, $ra, 8
current:
j example
nop
return:
j return
nop

example:
jr $ra
nop