Next: Label Output, Previous: Data Output, Up: Assembler Format
这一节的每个宏都是用于输出单个未初始化变量的整个工作中。
一条C语句(没有分号),用来将大小为size, 名字为name的通用标号的汇编定义,输出到stdio流stream中。 变量rounded为调用者想要对齐而舍入的大小。
使用表达式
assemble_name (stream,name)来输出name本身; 在这之前和之后,输出额外的定义name的汇编语法,以及换行。该宏控制如何输出未初始化的通用全局变量的汇编定义。
类似
ASM_OUTPUT_COMMON,除了其接受一个alignment,作为独立,显式的参数。 如果你定义了该宏,其被用于替换ASM_OUTPUT_COMMON, 使得你在处理变量对齐方面变得更加灵活。aligment被指定为位的数目。
类似
ASM_OUTPUT_ALIGNED_COMMON,除了要被输出的变量的decl, 如果存在的话,或者为NULL_TREE如果没有相应的变量。如果你定义了该宏, GCC将替换ASM_OUTPUT_COMMON和ASM_OUTPUT_ALIGNED_COMMON。 当你需要看到变量的decl,以便选择如何输出时,可以定义该宏。
一条C语句(没有分号),用来将名字为name, 大小为size个字节的未初始化的全局decl的汇编定义输出到stdio流 stream中。变量rounded为调用者想要对齐而舍入的大小。
当定义该宏时,可以尝试使用varasm.c中定义的
asm_output_bss。 如果不行, 使用表达式assemble_name (stream,name)来输出name本身; 在此之前和之后,输出额外的定义name的汇编语法,以及换行。有两种方式来处理全局BSS。一种是定义该宏或者它的对齐副本,
ASM_OUTPUT_ALIGNED_BSS。 另一种是让TARGET_ASM_SELECT_SECTION返回一个可切换的BSS section (参见 TARGET_HAVE_SWITCHABLE_BSS_SECTIONS)。你不需要两者都做。一些语言不具有
common数据,并且要求全局BSS为non-common的, 以便高效的处理未初始化全局变量。C++就是这样的例子。然而, 如果target不支持全局BSS,则前端可以选择生成全局common, 以便在目标文件中节省空间。
类似
ASM_OUTPUT_BSS,除了其接受需要的aligment作为单独,显式的参数。 如果你定义了该宏,其被用于替换ASM_OUTPUT_BSS, 这使得你在处理变量所需的对齐方面更加灵活。aligment被指定为位数。当定义该宏时, 尝试使用在文件varasm.c中定义的函数
asm_output_aligned_bss。 varasm.c when defining this macro.
一条C语句(没有分号),用来将名字为name, 大小为size个字节的local-common标号的汇编定义输出到stdio流stream中。 变量rounded为调用者想要对齐而舍入的大小。
使用表达式
assemble_name (stream,name)来输出name本身; 在此之前和之后,输出额外的定义name的汇编语法,以及换行。该宏控制如何输出未初始化的静态变量的汇编定义。