据我所知,程序计数器,$ 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..
我最终陷入了无限循环。
答案 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