|
要先定义 .section .data ,然后再接着定义 .section .bss 。不然,可能造成 .bss 区后面的 data 数据失效,如:.section .data
data1:
.quad 7252051615
data2:
.quad 5732348928
output:
.asciz "The result is %qd"
output2:
.asciz "%qd\n"
.section .bss
.lcomm data, 32 上面定义是正确定义顺序。
如果换一下 .section .bss 的位置:.section .data
data1:
.quad 7252051615
data2:
.quad 5732348928
output:
.asciz "The result is %qd"
output2:
.asciz "%qd\n" 可能造成错误的定义顺序。如果程序后面有一个 call printf 输出字符串语句,那么是是不会看到有任何结果输出,这是因为 .bss 下面的数据(与 .section .text 之间的数据)会都被认为是未定义数据,故定义的字符串 The result is %qd 被注释,从造成输出无效! |
|