我有以下 MIPS 汇编代码: 80031DB8 bnez $v0, loc_80031F58 80031DBC move $v0, $zero 据我所知,“分支不等于零”永远不会跳转到loc_80031F58,因为v0 = 0,是这样吗?
在比较时,$v0具有执行80031DB8之前的任何值。比较后,在延迟槽执行并开始跳转时,$v0被写入值0。 一旦分支被采取或未采取,$v0的值为零。也就是说,在执行80031F58(当分支被采取时)或80031DC0(当分支未被采取时)的开头,$v0将为0,尽管如果分支被采取,它必须先前具有非零值。