| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1327 人关注过本帖
标题:bss段中的本地通用内存区域和通用内存区域有什么区别?
只看楼主 加入收藏
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
结帖率:97.78%
收藏
已结贴  问题点数:20 回复次数:8 
bss段中的本地通用内存区域和通用内存区域有什么区别?
bss段中的本地通用内存区域和通用内存区域有什么区别?
< <汇编语言程序设计>>一书中给出的说明是:
虽然这两种区域工作情况类似, 但是本地通用内存区域是不会为本地汇编代码之外进行访问的数据保留的.


没看太懂, 大家最好还给个实例(AT&T汇编的)
搜索更多相关主题的帖子: bss段 
2009-08-18 22:22
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
不知道您看的什么书 这个不明白~
2009-08-19 18:30
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
回复 2楼 zklhp

额, 就是bss段中的.comm和.lcomm 有什么区别?

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2009-08-19 19:08
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
恕俺无知 是不是这个~

BSS(二进制文件术语)
  是“Block Started by Symbol”的缩写,意为“以符号开始的块”。
  BSS是Unix链接器产生的未初始化数据段。其他的段分别是包含程序代码的“text”段和包含已初始化数据的“data”段。BSS段的变量只有名称和大小却没有值。此名后来被许多文件格式使用,包括PE。“以符号开始的块”指的是编译器处理未初始化数据的地方。BSS节不包含任何数据,只是简单的维护开始和结束的地址,以便内存区能在运行时被有效地清零。BSS节在应用程序的二进制映象文件中并不存在。
  在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。
  比如,在C语言之类的程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始化的全局变量保存在.bss 段中。
  text和data段都在可执行文件中(在嵌入式系统里一般是固化在镜像文件中),由系统从可执行文件中加载;而bss段不在可执行文件中,由系统初始化。
2009-08-19 19:25
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
.lcomm 是不是local comm啊。就是不能被globe代码访问的数据啊。

以上瞎猜,哈哈。没搞过AT&T的汇编。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-08-19 20:02
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
回复 5楼 东海一鱼

嗯嗯, 书上也是这么写的, 就是搞不懂啊`. 为什么数据不能被globe代码访问`` ?

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2009-08-19 22:20
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
回复 4楼 zklhp

嗯, 没错, bss段差不多就是这东西`   

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2009-08-19 22:21
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:10 
回复 6楼 zqy110007

呵呵,还蒙对了?

我是这样想的,现在的语言(包括低级的)都有模块化的思想,一个模块内的私有变量是不允许外部代码访问的。这个.lcomm是不是基于这样的思想哪?在高级语言使用‘类’对象的私有成员区域来保证。低级语言没有这样的机制,只能用模块之间的public(globle)或未声明的局部变量(标号)来做类似的工作。

以上没有考证,纯属瞎掰,呵呵。见笑、见笑。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-08-20 17:24
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
回复 8楼 东海一鱼
不知道, 如果知道我也不会问了`

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2009-08-22 22:13
快速回复:bss段中的本地通用内存区域和通用内存区域有什么区别?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017825 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved