Re: [問題] 程式為什麼要分區段?
看板C_and_CPP (C/C++)作者descent (「雄辯是銀,沉默是金」)時間10年前 (2015/10/25 21:42)推噓4(4推 0噓 6→)留言10則, 5人參與討論串2/2 (看更多)
不是很確定你要問的是 elf 裡頭的 segment 還是 section。
如果是指載入程式到記憶體時的 segment,
那大概有一些目的。
若是類似變數存取的這種放在同一個記憶體區域,
就可以針對這些東西做某種設定。
例如將這個區域的記憶體屬性設定成唯讀, 這樣就做到了
唯讀變數的設定。
若是類似執行的部份放在同一塊區域, 可以設定成只能執行,
這樣要做修改程式碼的動作就會出錯。
不過若是沒有 mmu 來支援這些功能, 就不會有這樣的分別了。
bss 這塊記憶體位址, 在 c runtime 執行的時候便會用 0 來初始化這塊
記憶體, 其實我不知道有什麼功用, 因為沒有這麼做的話,自己的程式碼
也可以這麼做, 無損程式的撰寫。你也可以寫出不用到 bss 的程式,
不過你用的 c library 可就難以保證了。
這個問題真的困難, 我只是「略懂」, 希望能解除你一點疑惑。
我其實不確定和 cache 有沒關係, 因為不分這些區域, 只要
這些程式碼都在「附近」, 一樣可以受到 cache 的庇祐。
※ 引述《soga0806 (巴歐薩給路嘎)》之銘言:
: 小弟有點菜
: 只知道一個程式的包含很多區段
: Ex: stack heap text data bss
: 也大概知道各個區段存放的東西(除了bss不太懂)
: 想問的是為什麼要分出這些區段呢?
: 謝謝大大!
--
要有一流的運氣, 才能邂逅一流的美女。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.212.15
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1445780563.A.FFC.html
推
10/25 21:53, , 1F
10/25 21:53, 1F
推
10/26 01:52, , 2F
10/26 01:52, 2F
→
10/26 01:53, , 3F
10/26 01:53, 3F
→
10/26 01:53, , 4F
10/26 01:53, 4F
→
10/26 03:12, , 5F
10/26 03:12, 5F
→
10/26 03:13, , 6F
10/26 03:13, 6F
→
10/26 03:14, , 7F
10/26 03:14, 7F
→
10/26 03:15, , 8F
10/26 03:15, 8F
推
10/26 06:17, , 9F
10/26 06:17, 9F
推
10/28 10:57, , 10F
10/28 10:57, 10F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章