Assembly 使用相同寄存器的MIPS分支延迟槽和bnez
我有以下asm MIPS代码:Assembly 使用相同寄存器的MIPS分支延迟槽和bnez,assembly,mips,Assembly,Mips,我有以下asm MIPS代码: 80031DB8 bnez $v0, loc_80031F58 80031DBC move $v0, $zero 据我所知,“分支不等于零”永远不会跳转到loc_80031F58,因为v0=0,是吗?否。在比较时,$v0在执行80031DB8之前具有任何值。比较之后,当执行延迟时隙并开始进行跳转时,$v0被写入值0 一旦执行或不执行分支,$v0的值为零。也就是说,在开始执行80031F58(当执行分支时)或80031DC0(当未执行分支时),$v
80031DB8 bnez $v0, loc_80031F58
80031DBC move $v0, $zero
据我所知,“分支不等于零”永远不会跳转到loc_80031F58,因为v0=0,是吗?否。在比较时,
$v0
在执行80031DB8
之前具有任何值。比较之后,当执行延迟时隙并开始进行跳转时,$v0
被写入值0
一旦执行或不执行分支,
$v0
的值为零。也就是说,在开始执行80031F58
(当执行分支时)或80031DC0(当未执行分支时),$v0
将0
,但如果执行分支,它之前一定有一个非零值。感谢您提供了令人敬畏的快速答案。