【问题标题】:MIPS branch delay slot and bnez using same registerMIPS 分支延迟槽和 bnez 使用相同的寄存器
【发布时间】:2011-10-17 17:42:04
【问题描述】:

我有以下 asm MIPS 代码:

80031DB8  bnez    $v0, loc_80031F58
80031DBC  move    $v0, $zero

据我了解,“分支不等于零”永远不会跳转到 loc_80031F58,因为 v0 = 0,对吗?

【问题讨论】:

    标签: assembly mips


    【解决方案1】:

    没有。在比较时,$v0 在执行80031DB8 之前具有任何值。比较后,当延迟槽执行并开始进行跳转时,$v0 被写入值0

    一旦分支被采用或不被采用,$v0 的值为零。也就是说,在80031F58(当分支被采用时)或80031DC0(当分支未被采用时)开始执行时,$v0 将是0,尽管如果采用分支,它必须有之前有一个非零值。

    【讨论】:

    • 感谢您的快速回答。
    猜你喜欢
    • 2018-07-16
    • 2011-06-03
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2013-10-09
    • 2021-07-10
    • 2015-03-28
    • 1970-01-01
    相关资源
    最近更新 更多