如何在 MIPS 架构中不使用 J-Type 指令保存程序计数器地址

Posted

技术标签:

【中文标题】如何在 MIPS 架构中不使用 J-Type 指令保存程序计数器地址【英文标题】:How to save program counter address without using J-Type instructions in MIPS architecture 【发布时间】:2016-03-18 18:47:16 【问题描述】:

我必须在不使用 J-Type 指令的情况下将 jal 指令实现为伪指令。我可以用 jr 来实现它,但我知道 jal 将当前的 PC+8 存储在 $ra 中。我该如何实施?没有J-type如何在ra中存储PC地址?

【问题讨论】:

鉴于没有指令可以直接访问 PC 寄存器的当前值,我想知道这是否可能。 【参考方案1】:

试试这个:

    la  $ra, ret    # load return address (pseudo instruction!)
    j   dest        # call the function
    nop             # delay slot
ret:                # return here
    ...

dest:               # destination function
    ...
    jr  $ra

【讨论】:

感谢您的回答,但在这里您使用的是 J-Type,我被要求在没有任何 J-Type 指令的情况下这样做。 @Vlad 所以将j 替换为la,后跟jr

以上是关于如何在 MIPS 架构中不使用 J-Type 指令保存程序计数器地址的主要内容,如果未能解决你的问题,请参考以下文章

优化系列MIPS架构汇编优化总结

mips debian中的mips固件:chroot非法指令

几种芯片架构:X86ARMRISC-V和MIPS

优化系列汇编优化技术:MIPS架构纯汇编优化及demo

计算机按指令系统如何分类?都有哪些计算机?

设计mips32cpu时,运算指令溢出怎么处理