gpt4 book ai didi

assembly - MIPS BNE 指令

转载 作者:行者123 更新时间:2023-12-04 06:06:06 29 4
gpt4 key购买 nike

我有一组说明如下:

loop:
sll $t1, $t0, 2 # t1 = (i * 4)
add $t2, $a0, $t1 # t2 contains address of array[i]
sw $t0, 0($t2) # array[i] = i

addi $t0, $t0, 1 # i = i+1
add $t4, $t4, $t0 # sum($t4) = ($t4 + array[i])

slt $t3, $t0, $a1 # $t3 = ( i < array_size)
bne $t3, $zero, loop # if ( i < array_size ) then loop
sll指令的地址(程序计数器)为 0x18 . bne有一个地址 0x30 . MARS模拟器解读 bne指令为: bne $11, $0, 0xfff9 . 0xfff9-7 ,表示指令将向后跳 7 步。然而, sll倒退了六步。 MIPS 是否考虑了当前的指令?还是因为程序计数器在 fetch 中递增而发生这种情况?阶段,在指令完成执行之前?

最佳答案

在分支 mips 上执行两条指令——分支指令本身和它后面的一条(所谓的分支延迟槽)。

在分支生效时,PC指向分支指令本身之后的指令,所以-7是合适的。

关于assembly - MIPS BNE 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8334919/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com