MIPS汇编语言 - 在不使用' jal'的情况下调用函数。

时间:2016-01-06 15:24:47

标签: assembly mips function-call

我想调用一个函数但由于某些原因我现在可以使用了 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

由于

1 个答案:

答案 0 :(得分:4)

如果您在任何引用中查找jal指令的行为,那么模拟它是微不足道的。无论如何,您可能知道jal将回复地址存储在$ra中,这就是您可以使用jr $ra从函数返回的原因。因此,您需要做的就是自己存储该地址,然后您可以使用j。例如:

    la $ra, continue
    j function
continue:
    ...