曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 6281|回复: 0
打印 上一主题 下一主题

.section .data 数据区定义和 .section .bss 定义顺序要对

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2010-1-17 17:49:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要先定义 .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

.section .bss

        .lcomm data, 32


output:
        .asciz "The result is %qd"

output2:
        .asciz "%qd\n"
可能造成错误的定义顺序。如果程序后面有一个 call printf 输出字符串语句,那么是是不会看到有任何结果输出,这是因为 .bss 下面的数据(与 .section .text 之间的数据)会都被认为是未定义数据,故定义的字符串 The result is %qd 被注释,从造成输出无效!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-3 13:01 , Processed in 0.065524 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表