2013-02-27 19 views

回答

2

首先,您並不總是需要使用這些部分。您可以在數據部分包含說明,並在大量系統的文本部分中包含數據。

雖然有一些很好的理由讓他們。

  1. 如果你的操作系統和硬件都足夠成熟,可以映射某些網頁「不可執行」,這樣可以提供從那裏你跳進數據部分意外的錯誤一定的保護。

  2. 同樣,您可以將文本部分標記爲「只讀」,這樣您就不會意外地用錯誤的指針修改代碼。

  3. 最後,bss部分只包含零初始化的數據,因此在彙編時標記它可以減少可執行文件的大小 - 加載器可以在跳入程序之前mem對正確數量的零進行memset設置,而不是佔用大量的存儲空間來保存一堆零。

+0

我以爲bss部分包含所有未初始化的變量? – CodyBugstein 2013-02-27 23:12:04

+0

就C而言,例如,只有本地人可以被初始化,並且由於局部變量在堆棧上,這沒有任何意義。 – 2013-02-27 23:45:20

0

我不能說NASM的設計,但三段.text,.bss和.data分別保存代碼,初始化變量和未初始化變量,並在結果中使用適當的訪問標誌進行映射二進制文件。