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

时间:2012-06-25 13:52:24

标签: gcc assembly powerpc

我正在编写启动代码,我只想在分支指令中使用相对寻址。

我注意到以下汇编代码:

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

分支的目的地是所有数字的标签,分支指令在标签后面有字母'b'。我认为'b'意味着倒退。我也看过'f',我认为这意味着前进。

这种表示法似乎意味着相对解决,但我找不到任何说明这种情况的文件。

使用数字后跟“f”或“b”的符号是保证相对分支的唯一机制吗?或者是否可以使用带有f / b后缀的字母数字标签(更有意义的名称)?

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

2 个答案:

答案 0 :(得分:1)

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

b  110b ; relative
ba 110b ; absolute

答案 1 :(得分:1)

您的其他问题的答案在Symbol Names上的气体文件:

所有数字标签都是“本地标签”并且已使用,因此您无需为每个标签创建唯一名称;我想这在宏内部特别有用。 b / f后缀是确定你所引用的标签所必需的,因为名称不需要是唯一的(它还告诉解析器它是本地标签而不是立即整数)。