Previous: Exception Region Output, Up: Assembler Format


17.21.10 用于对齐的汇编命令

这一节描述了用于对齐的命令。

— Macro: JUMP_ALIGN (label)

label前放入的对齐数(基于2的log), label为跳转的普通目的地并且不具有fallthru入边。

如果你目前不想做任何特殊的对齐,则不需要定义该宏。 大多数机器描述目前都没有定义该宏。

除非需要检查label参数, 最好在target的OVERRIDE_OPTIONS中设置变量align_jumps。 否则应该尽量在JUMP_ALIGN实现中尊重用户在align_jumps中的选择。

— Macro: LABEL_ALIGN_AFTER_BARRIER (label)

label前放入的对齐数(基于2的log),label后跟随一个BARRIER

如果你目前不想做任何特殊的对齐,则不需要定义该宏。 大多数机器描述目前都没有定义该宏。

— Macro: LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP

当应用LABEL_ALIGN_AFTER_BARRIER时,要跳过的最大字节个数。 这只在定义了ASM_OUTPUT_MAX_SKIP_ALIGN时才起作用。

— Macro: LOOP_ALIGN (label)

label前放入的对齐数(基于2的log), label后跟随一个NOTE_INSN_LOOP_BEG注解。

如果你目前不想做任何特殊的对齐,则不需要定义该宏。 大多数机器描述目前都没有定义该宏。

除非需要检查label参数, 最好在target的OVERRIDE_OPTIONS中设置变量align_loops。 否则应该尽量在LOOP_ALIGN实现中尊重用户在align_loops中的选择。

— Macro: LOOP_ALIGN_MAX_SKIP

当应用LOOP_ALIGN时,要跳过的最大字节个数。 这只在定义了ASM_OUTPUT_MAX_SKIP_ALIGN时才起作用。

— Macro: LABEL_ALIGN (label)

label前放入的对齐数(基于2的log), 如果LABEL_ALIGN_AFTER_BARRIER / LOOP_ALIGN指定了不相同的对齐, 则使用最大的值。

除非需要检查label参数, 最好在target的OVERRIDE_OPTIONS中设置变量align_labels。 否则应该尽量在LABEL_ALIGN实现中尊重用户在align_labels中的选择。

— Macro: LABEL_ALIGN_MAX_SKIP

当应用LABEL_ALIGN时,要跳过的最大字节个数。 这只在定义了ASM_OUTPUT_MAX_SKIP_ALIGN时才起作用。

— Macro: ASM_OUTPUT_SKIP (stream, nbytes)

一条C语句,将一条汇编指令输出到stdio流stream中, 使得将位置计数器前移nbytes个字节。那些字节在加载时应该为0。 nbytes将为unsigned HOST_WIDE_INT类型的C表达式。

— Macro: ASM_NO_SKIP_IN_TEXT

定义该宏,如果ASM_OUTPUT_SKIP不应该在text section中使用, 因为无法在跳过的字节中放入0。这在许多Unix系统上都为, 当在text section中使用时,跳过字节的伪指令会产生no-op指令,而不是0。

— Macro: ASM_OUTPUT_ALIGN (stream, power)

一条C语句,将一条汇编指令输出到stdio流stream中, 使得将位置计数器前移2的power次幂个字节。 powerint类型的表达式。

— Macro: ASM_OUTPUT_ALIGN_WITH_NOP (stream, power)

类似ASM_OUTPUT_ALIGN,除了使用“nop”指令来填充,如果需要的话。

— Macro: ASM_OUTPUT_MAX_SKIP_ALIGN (stream, power, max_skip)

一条C语句,将一条汇编指令输出到stdio流stream中, 使得将位置计数器前移2的power次幂个字节, 但只有当需要max_skip个或者更少的字节来满足对齐要求的时候才行。 powermax_skipint类型的表达式。