如何使用 gcc powerpc 程序集创建绝对和相对分支



我正在编写引导代码,我只想使用带有分支指令的相对寻址。

我注意到以下汇编代码:

110: lwz r4,0(r6)
      ...
      ...
     b 110b
分支

的目的地是一个全是数字的标签,分支指令在标签后面有字母"b"。我假设"b"的意思是倒退。我也看到了"f",我认为这意味着前进。

这种表示法似乎意味着相对寻址,但我找不到任何说明这一点的文档。

使用数字后跟"f"或"b"的表示法是保证相对分支的唯一机制吗? 或者字母数字标签(更有意义的名称)可以与 f/b 后缀一起使用吗?

我正在使用 gcc 交叉编译器。

相对/绝对区别是从所使用的指令推断出来的。汇编程序应该不需要猜测你想要哪一个。对于个人出价:

b  110b ; relative
ba 110b ; absolute

您的另一个问题的答案在符号名称的气体文档中:

全数字标签是"本地标签",因此您无需为每个标签发明唯一的名称;我想这在宏中特别有用。b/f 后缀对于确定您引用的标签是必要的,因为名称不需要是唯一的(它还告诉解析器它是一个本地标签而不是整数即时)。

最新更新