Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly MIPS中的标签执行_Assembly_Mips - Fatal编程技术网

Assembly MIPS中的标签执行

Assembly MIPS中的标签执行,assembly,mips,Assembly,Mips,这是一个非常简单的问题,但是如果我有一堆为MIPS编写的指令(尽管我假设这可能会在一般情况下延续到汇编),并且在某个点上有一个标签,那么即使没有显式调用,该标签上的指令也会执行吗?例如,假设我有: SUB$6、$4、$3 BNE$6,$2,标签1 ADDI$6,$0,-8 LABEL1:SW$60x01000 如果BNE分支到LABEL1,那么ADDI将被跳过。但是如果BNE没有分支到LABEL1,那么ADDI发生了,但是下一行也总是发生吗?“下一行也总是发生吗?” 是“下一行也总是发生吗?”

这是一个非常简单的问题,但是如果我有一堆为MIPS编写的指令(尽管我假设这可能会在一般情况下延续到汇编),并且在某个点上有一个标签,那么即使没有显式调用,该标签上的指令也会执行吗?例如,假设我有:

SUB$6、$4、$3

BNE$6,$2,标签1

ADDI$6,$0,-8

LABEL1:SW$60x01000

如果
BNE
分支到LABEL1,那么ADDI将被跳过。但是如果BNE没有分支到LABEL1,那么ADDI发生了,但是下一行也总是发生吗?

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

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

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

仅当条件为真且执行了分支时,才会执行目标标签上的指令

更多信息

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

仅当条件为真且执行了分支时,才会执行目标标签上的指令


更多信息

顺便说一句,那篇文章提到了具有两个分支延迟槽的体系结构。然后,在您的示例中,标签处的代码将被调用一次或两次,但通常只有一个插槽。顺便说一句,该文章提到了具有两个分支延迟插槽的体系结构。然后,在您的示例中,标签处的代码将被调用一次或两次,但通常只有一个插槽。