Next: , Previous: Instruction Output, Up: Assembler Format


17.21.8 派遣表的输出

这些是关于派遣表的。

— Macro: ASM_OUTPUT_ADDR_DIFF_ELT (stream, body, value, rel)

一条C语句,用来将汇编伪指令输出到stdio流stream中, 以生成两个标号间的距离。valuerel为两个内部标号的编号。 这些标号的定义通过使用(*targetm.asm_out.internal_label)来输出, 并且它们必须使用相同的方式打印。例如,

          fprintf (stream, "\t.word L%d-L%d\n",
                   value, rel)

在一些机器上,派遣表中的地址是相对于表自己的地址,对此你必须提供该宏。 如果定义,GCC还将在生成PIC的所有机器上使用该宏。 bodyADDR_DIFF_VEC的主体;提供它使得可以读取模式和标记。

— Macro: ASM_OUTPUT_ADDR_VEC_ELT (stream, value)

在一些机器上,派遣表中的地址为绝对地址,对此应该提供该宏。

定义应该为一条C语句,用来将汇编伪指令输出到stdio流stream中, 以生成对一个标号的引用。value为内部标号的编号, 其定义应该使用(*targetm.asm_out.internal_label)输出。例如,

          fprintf (stream, "\t.word L%d\n", value)
— Macro: ASM_OUTPUT_CASE_LABEL (stream, prefix, num, table)

定义该宏,如果在跳转表之前的标号需要被特殊输出。 前三个参数跟(*targetm.asm_out.internal_label)相同; 第四个参数为随后的跳转表(一个包含addr_vecaddr_diff_vecjump_insn)。

该特点用于system V,来为table输出一条swbeg语句。

如果没有定义该宏,这些标号使用(*targetm.asm_out.internal_label)输出。

— Macro: ASM_OUTPUT_CASE_END (stream, num, table)

定义该宏,如果在跳转表的结尾必须输出一些特殊的东西。定义应该为一条C语句, 在写完table的汇编代码后被执行。其应该将适当的代码写入到stdio流stream中。 参数table为jump-table insn,num为前面的标号的编号。

如果没有定义该宏,在跳转表的结尾不输出任何特殊的东西。

— Target Hook: void TARGET_ASM_EMIT_UNWIND_LABEL (stream, decl, for_eh, empty)

该target钩子在每个FDE的起始处生成一个标号。在一些target上,FDE需要特殊的标号, 对此应该定义该宏。其应该为函数声明decl相关联的FDE写入适当的标号到stdio流 stream中。第三个参数,for_eh,为一个布尔值;当是异常表时为真。 第四个参数empty,为一个布尔值;当是一个省略掉的FDE的占位符标号时为真。

缺省为FDE不给出非局部标号。

— Target Hook: void TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL (stream)

该target钩子在异常表的起始处生成一个标号。在一些target上, 异常表需要根据函数被分割开,对此应该定义该宏。

The default is that no label is emitted. 缺省为不生成标号。

— Target Hook: void TARGET_ASM_EMIT_EXCEPT_PERSONALITY (rtx personality)

If the target implements TARGET_ASM_UNWIND_EMIT, this hook may be used to emit a directive to install a personality hook into the unwind info. This hook should not be used if dwarf2 unwind info is used.

— Target Hook: void TARGET_UNWIND_EMIT (FILE * stream, rtx insn)

该target钩子生成需要展开给定指定的汇编伪指令。 这只在设置了TARGET_UNWIND_INFO的时候才被使用。

— Target Hook: bool TARGET_ASM_UNWIND_EMIT_BEFORE_INSN

True if the TARGET_ASM_UNWIND_EMIT hook should be called before the assembly for insn has been emitted, false if the hook should be called afterward.