bss段代碼段及數(shù)據(jù)段的區(qū)別.doc

bss段代碼段及數(shù)據(jù)段的區(qū)別.doc

ID:50668115

大?。?2.01 KB

頁數(shù):10頁

時間:2020-03-07

bss段代碼段及數(shù)據(jù)段的區(qū)別.doc_第1頁
bss段代碼段及數(shù)據(jù)段的區(qū)別.doc_第2頁
bss段代碼段及數(shù)據(jù)段的區(qū)別.doc_第3頁
bss段代碼段及數(shù)據(jù)段的區(qū)別.doc_第4頁
bss段代碼段及數(shù)據(jù)段的區(qū)別.doc_第5頁
資源描述:

《bss段代碼段及數(shù)據(jù)段的區(qū)別.doc》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。

1、一個程序本質上都是由bss段、data段、text段三個組成的。這樣的概念,不知道最初來源于哪里的規(guī)定,但在當前的計算機程序設計中是很重要的一個基本概念。而且在嵌入式系統(tǒng)的設計中也非常重要,牽涉到嵌入式系統(tǒng)運行時的內(nèi)存大小分配,存儲單元占用空間大小的問題。在采用段式內(nèi)存管理的架構中(比如intel的80x86系統(tǒng)),bss段(BlockStartedbySymbolsegment)通常是指用來存放程序中未初始化的全局變量的一塊內(nèi)存區(qū)域,一般在初始化時bss段部分將會清零。bss段屬于靜態(tài)內(nèi)存分配,即程序一開始就將其清零了。比如,在C語言之類的程序編譯完成之后,已初始化的全局變量保存在.

2、data段中,未初始化的全局變量保存在.bss段中。在《Programminggroundup》里對.bss的解釋為:Thereisanothersectioncalledthe.bss.Thissectionislikethedatasection,exceptthatitdoesn’ttakeupspaceintheexecutable.text和data段都在可執(zhí)行文件中(在嵌入式系統(tǒng)里一般是固化在鏡像文件中),由系統(tǒng)從可執(zhí)行文件中加載;而bss段不在可執(zhí)行文件中,由系統(tǒng)初始化?!纠弧?XMLNAMESPACEPREFIX="O"/>用cl編譯兩個小程序如下:程序1:intar

3、[30000];voidmain(){......}程序2:intar[300000]={1,2,3,4,5,6};voidmain(){......}發(fā)現(xiàn)程序2編譯之后所得的.exe文件比程序1的要大得多。當下甚為不解,于是手工編譯了一下,并使用了/FAs編譯選項來查看了一下其各自的.asm,發(fā)現(xiàn)在程序1.asm中ar的定義如下:_BSSSEGMENT?ar@@3PAHADD0493e0HDUP(?);ar_BSSENDS而在程序2.asm中,ar被定義為:_DATASEGMENT?ar@@3PAHADD01H;arDD02HDD03HORG$+1199988_DATAENDS區(qū)別很

4、明顯,一個位于.bss段,而另一個位于.data段,兩者的區(qū)別在于:全局的未初始化變量存在于.bss段中,具體體現(xiàn)為一個占位符;全局的已初始化變量存于.data段中;而函數(shù)內(nèi)的自動變量都在棧上分配空間。.bss是不占用.exe文件空間的,其內(nèi)容由操作系統(tǒng)初始化(清零);而.data卻需要占用,其內(nèi)容由程序初始化,因此造成了上述情況。【例二】編譯如下程序(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. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。