【问题标题】:Can I use $PC in MIPS我可以在 MIPS 中使用 $PC
【发布时间】:2011-11-03 05:09:30
【问题描述】:

据我所知,程序计数器 $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..

我最终陷入无限循环。

【问题讨论】:

    标签: mips


    【解决方案1】:

    使用 JAL 来找出 PC 是毫无用处的,因为您可以使用该 JAL 进行跳转...一种方法是使用 LA 伪指令,例如:

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

    【讨论】:

    • 谢谢!我需要多一点时间来检查一下。谢谢。 :)))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2018-04-20
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多