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的汇编语法,以及换行。该宏控制如何输出未初始化的静态变量的汇编定义。