BNE - 我输入指令 - 'i' 在哪里发挥作用?

BNE - I type instruction - Where does 'i' come into play?

我正在努力更好地理解汇编,但我不太确定 i(立即数)如何为 BNE 发挥作用。菜鸟请见谅

如果BNE这样写:

BNE , , loop

这意味着 "goto loop if </code> does not equal <code>" 然后我假设循环是直接部分。正确吗?

这只是一个程序计数器还是循环的位置?因此,如果循环被设置为某个指令数(我们就称它为 0x0001),这个循环地址(或指令数)会被设置在这个 i 中吗?

也许我这样写会更好...

opcode  = 5 | reg1 = whatever addr | reg2  = whatever addr | immediate = 0x0001

这看起来对吗,还是我真的很困惑?

汇编程序采用地址循环(这实际上是某处某个地址的名称)它为您完成计算偏移量的工作,并将该偏移量编码为您的指令。否则,您将不得不说 bne $1、$2、+28,手算数字,然后每次在这两点之间修改代码时,您都必须重新调整这些偏移量中的每一个。

实际上,一些汇编程序或链接程序可能会为您添加一个蹦床。例如,假设您有一些指令集,相对跳转只有 128 条指令,并且您使用了该对象中未定义的标签。汇编器可能会在 128 条指令内放置一个无条件分支到你真正想去的地方。有些可能不会,你最终会得到一个错误,它无法在你要求的指令中编码偏移量。

我的目标是使用标签(地址)进行编程,然后让汇编程序为您完成一些工作。在这种情况下,它将您必须的标签转换为与当前指令有一定距离的标签并对其进行编码。