我有以下asm MIPS代码:
80031DB8 bnez $v0, loc_80031F58
80031DBC move $v0, $zero
Run Code Online (Sandbox Code Playgroud)
据我所知,"分支不等于零"永远不会跳转到loc_80031F58,因为v0 = 0,是吗?
不.在比较时,$v0执行之前有任何价值80031DB8.在比较之后,当执行延迟槽并开始跳转时,$v0写入该值0.
一旦采取或不采取分支,$v0值为零.也就是说,在开始执行任何80031F58(当分支转移)或80031DC0(当没有采取分支),$v0将是0,尽管如果分支,它必须以前有一个非零值.
| 归档时间: |
|
| 查看次数: |
2142 次 |
| 最近记录: |