bss段代码段及数据段的区别.doc

bss段代码段及数据段的区别.doc

ID:50668115

大小:82.01 KB

页数:10页

时间:2020-03-07

bss段代码段及数据段的区别.doc_第1页
bss段代码段及数据段的区别.doc_第2页
bss段代码段及数据段的区别.doc_第3页
bss段代码段及数据段的区别.doc_第4页
bss段代码段及数据段的区别.doc_第5页
资源描述:

《bss段代码段及数据段的区别.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一个程序本质上都是由bss段、data段、text段三个组成的。这样的概念,不知道最初来源于哪里的规定,但在当前的计算机程序设计中是很重要的一个基本概念。而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题。在采用段式内存管理的架构中(比如intel的80x86系统),bss段(BlockStartedbySymbolsegment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。比如,在C语言之类的程序编译完成之后,已初始化的全局变量保存在.

2、data段中,未初始化的全局变量保存在.bss段中。在《Programminggroundup》里对.bss的解释为:Thereisanothersectioncalledthe.bss.Thissectionislikethedatasection,exceptthatitdoesn’ttakeupspaceintheexecutable.text和data段都在可执行文件中(在嵌入式系统里一般是固化在镜像文件中),由系统从可执行文件中加载;而bss段不在可执行文件中,由系统初始化。【例一】用cl编译两个小程序如下:程序1:intar

3、[30000];voidmain(){......}程序2:intar[300000]={1,2,3,4,5,6};voidmain(){......}发现程序2编译之后所得的.exe文件比程序1的要大得多。当下甚为不解,于是手工编译了一下,并使用了/FAs编译选项来查看了一下其各自的.asm,发现在程序1.asm中ar的定义如下:_BSSSEGMENT?ar@@3PAHADD0493e0HDUP(?);ar_BSSENDS而在程序2.asm中,ar被定义为:_DATASEGMENT?ar@@3PAHADD01H;arDD02HDD03HORG$+1199988_DATAENDS区别很

4、明显,一个位于.bss段,而另一个位于.data段,两者的区别在于:全局的未初始化变量存在于.bss段中,具体体现为一个占位符;全局的已初始化变量存于.data段中;而函数内的自动变量都在栈上分配空间。.bss是不占用.exe文件空间的,其内容由操作系统初始化(清零);而.data却需要占用,其内容由程序初始化,因此造成了上述情况。【例二】编译如下程序(test.cpp):#include#defineLEN1002000intinbss[LEN];floatfA;intindata[LEN]={1,2,3,4,5,6,7,8,9};doubledbB=100.0;c

5、onstintcst=100;intmain(void){intrun[100]={1,2,3,4,5,6,7,8,9};for(inti=0;i

6、'DATA'_DATAENDSCONSTSEGMENTDWORDUSE32PUBLIC'CONST'CONSTENDS_BSSSEGMENTDWORDUSE32PUBLIC'BSS'_BSSENDS_TLSSEGMENTDWORDUSE32PUBLIC'TLS'_TLSENDSFLATGROUP_DATA,CONST,_BSSASSUMECS:FLAT,DS:FLAT,SS:FLATendifPUBLIC?inbss@@3PAHA;inbssPUBLIC?fA@@3MA;fAPUBLIC?indata@@3PAHA;indataPUBLIC?dbB@@3NA;dbB_BSSSEGMEN

7、T?inbss@@3PAHADD0f4a10HDUP(?);inbss?fA@@3MADD01HDUP(?);fA_BSSENDS_DATASEGMENT?indata@@3PAHADD01H;indataDD02HDD03HDD04HDD05HDD06HDD07HDD08HDD09HORG$+4007964?dbB@@3NADQ04059000000000000r;100;dbB_DATA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。