【发布时间】:2011-10-17 17:42:04
【问题描述】:
我有以下 asm MIPS 代码:
80031DB8 bnez $v0, loc_80031F58
80031DBC move $v0, $zero
据我了解,“分支不等于零”永远不会跳转到 loc_80031F58,因为 v0 = 0,对吗?
【问题讨论】:
我有以下 asm MIPS 代码:
80031DB8 bnez $v0, loc_80031F58
80031DBC move $v0, $zero
据我了解,“分支不等于零”永远不会跳转到 loc_80031F58,因为 v0 = 0,对吗?
【问题讨论】:
没有。在比较时,$v0 在执行80031DB8 之前具有任何值。比较后,当延迟槽执行并开始进行跳转时,$v0 被写入值0。
一旦分支被采用或不被采用,$v0 的值为零。也就是说,在80031F58(当分支被采用时)或80031DC0(当分支未被采用时)开始执行时,$v0 将是0,尽管如果采用分支,它必须有之前有一个非零值。
【讨论】: