[問題] bss section為啥不占磁碟空間

看板C_and_CPP作者 (我愛阿蓉)時間12年前 (2012/03/27 13:09), 編輯推噓6(6010)
留言16則, 3人參與, 最新討論串1/3 (看更多)
很抱歉~這問題不知道是否適合po在這 我再看 程式設計師的自我修養 第三章 他途中提到一句話 "bss section是不占用磁碟空間" 就此令我無法理解... google的老半天 有幾篇文章 但他們好像也沒解釋得很清楚也直接下結論 請問各位該怎麼理解這句話 static int x; 至少他需要記錄bss section 需要占用 "多少"byte這個值吧 "多少" 難道不用一起寫到elf檔案嗎? 他是有提到"預留多少空間" 這個預留值再怎樣都要寫到elf檔案吧@@ 請教各位 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66

03/27 17:37, , 1F
bss裡面放的變數按照標準規定都要初始化成0,假設共有三個
03/27 17:37, 1F

03/27 17:38, , 2F
int則bss至少要有12 byte,那只要從開頭位址分配大於12的
03/27 17:38, 2F

03/27 17:40, , 3F
實體記憶體空間就沒問題。從分頁表找一個全0的分頁就解決
03/27 17:40, 3F

03/27 17:41, , 4F
bss內的變數因為固定是0,所以不需要用硬碟空間記個別的值
03/27 17:41, 4F

03/27 21:26, , 5F
p大妳說的12byte 這個"12"難道不用記錄在硬碟嗎 elf檔案
03/27 21:26, 5F

03/27 21:43, , 6F
bss section header 記載12這個大小,section本體可不記錄
03/27 21:43, 6F

03/27 21:51, , 7F
62頁裡的 header 說 bss size=4,其檔案偏移位置跟 rodata
03/27 21:51, 7F

03/27 21:52, , 8F
一樣都是再 0x98 對照63頁的圖,可知bss本體不佔檔案空間
03/27 21:52, 8F

03/27 23:11, , 9F
bss section header是指elf的header裡的一個資訊嗎?
03/27 23:11, 9F

03/28 02:50, , 10F
12應該會被記錄在.text 所謂不佔空間 是指我不用去紀錄
03/28 02:50, 10F

03/28 02:51, , 11F
0x00000000 如此
03/28 02:51, 11F

03/28 10:10, , 12F
Text不是紀錄程式碼嗎,12我看書無法參悟到底存哪
03/28 10:10, 12F

03/28 10:49, , 13F
另外問下 data secetion or bss section大小有限制嗎?
03/28 10:49, 13F

03/28 10:49, , 14F
之前不懂這些 有看到推文 回說 靜態陣列 太大 有人說宣告在
03/28 10:49, 14F

03/28 10:50, , 15F
global試試看...難道這塊section 比較大嗎?
03/28 10:50, 15F

03/28 14:33, , 16F
程式在執行前會先進行一些初始化 我覺得應該會在那邊
03/28 14:33, 16F
文章代碼(AID): #1FSKjmtC (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FSKjmtC (C_and_CPP)