[英]MIPS branch delay slot and bnez using same register
我有以下asm MIPS代码:
80031DB8 bnez $v0, loc_80031F58
80031DBC move $v0, $zero
据我所知,“分支不等于零”永远不会跳转到loc_80031F58,因为v0 = 0,是吗?
不。在比较时, $v0
在执行80031DB8
之前具有任何值。 在比较之后,当执行延迟槽并开始跳转时, $v0
被写入值0
。
一旦采用或不采用分支, $v0
的值为零。 也就是说,在开始执行80031F58
(采用分支时)或80031DC0(不采用分支时)时, $v0
将为0
,但如果采用分支,则必须具有非零值以前的价值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.