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

时间:2016-02-18 20:44:02

标签: assembly mips

我试图更好地理解装配,我不确定i(立即)是如何为BNE发挥作用的。请原谅noobness。

如果BNE这样写:

BNE $1, $2, loop

表示“如果$1不等于$2,则转到循环”然后我假设循环是直接部分。正确的吗?

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

如果我像这样把它写出来,也许会更好......

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

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

1 个答案:

答案 0 :(得分:1)

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

实际上,有些装配工或连接装置可能会为您添加蹦床。比方说,您有一些指令集,相对跳转只有128条指令,并且您使用的是未在该对象中定义的标签。汇编程序可能非常友好,可以在128条指令中放置一个无条件分支到你真正想去的地方。有些可能没有,你最终会得到一个错误,它无法对你要求的指令中的偏移进行编码。

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

相关问题