MIPS中的标签执行

时间:2010-09-01 03:32:34

标签: assembly mips

这是一个非常简单的问题,但是如果我有一堆为MIPS编写的指令(虽然我认为这可能会延续到一般的汇编),并且在某些时候有一个标签,那个标签上的指令是否正确即使没有明确调用它也会被执行?例如,假设我有:

SUB $6, $4, $3

BNE $6, $2, LABEL1

ADDI $6, $0, -8

LABEL1: SW $6, 0x01000

如果BNE分支到LABEL1,则跳过ADDI。但是如果BNE没有分支到LABEL1,那么ADDI就会发生,但是下一行总是会发生吗?

2 个答案:

答案 0 :(得分:1)

它被称为延迟槽。执行以下指令后执行或不执行分支。这就是为什么在MIPS代码中看到nop分支指令后很常见的原因。延迟槽中的分支指令通常是未定义的行为。

目标标签上的指令只有在条件为真且分支被执行时才会执行。

更多信息here

答案 1 :(得分:0)

“下一行总是会发生吗?”