我想调用一个函数但由于某些原因我现在可以使用了
jal
指令。有没有办法做到这一点?
我的想法是以某种方式获得$ra
中程序计数器的价值
然后只需使用j function
,就像这样
# somehow $ra = address of next instruction
addi $ra, $ra, 8 # word length is 32 bytes so $ra gets the address of
# the next instruction after 'j function'
j function
# continue here after function ends
function:
# do stuff
jr $ra
由于
答案 0 :(得分:4)
如果您在任何引用中查找jal
指令的行为,那么模拟它是微不足道的。无论如何,您可能知道jal
将回复地址存储在$ra
中,这就是您可以使用jr $ra
从函数返回的原因。因此,您需要做的就是自己存储该地址,然后您可以使用j
。例如:
la $ra, continue
j function
continue:
...