2011-01-31 77 views

回答

2

是的,空標誌使其成爲只讀(任何標誌沒有明確的w可寫使它只讀),因爲你可以驗證,例如使用objdump。 因此,.section foo.section bar, ""都創建一個只讀部分。不過,您可能想要使其可分配,如.section baz, "a"。這似乎也自動打開@progbits(在objdump中標記爲LOAD)以實際將文件中的數據讀入內存。您也可以手動指定以保證安全。有關更多詳細信息,請參閱GAS documentation

1

編輯:看看GNU AS的信息,我在下面寫了一些答案。我很確定,就像在我的鏈接器腳本示例中一樣,將「w」留出將注意此部分是不可寫的。


對不起,如果這完全不是你問的。聽起來很對,所以我刺了一刀!

所以,如果你在談論鏈接器,那麼我認爲你所尋找的是鏈接器腳本的「內存」區域。

例如:

MEMORY 
{ 
    flash (rx) : org = 0x00000000 , len = 0x00080000 
    sram (rwx) : org = 0x40000000 , len = 0x00010000 
} 

,我離開了「W」我的閃存段的事實意味着,它是隻讀的。然後,在部分說明書中稍後使用:

SECTIONS 
{ 
    /* .text section (executable code) */ 
    .text : 
    { 
     blah blah blah 
    } > flash 
    _etext = . ; 
    PROVIDE (etext = .); 

    /* .data section (read/write initialized variables) */ 
    .data : AT (_etext) 
    { 
     blah blah blah 
    } > sram 
} 

我指定,其中每個部分被存儲在存儲器,與所述>閃光燈或> SRAM的部分規格來描繪,如果它是在只讀存儲器或不(和「AT(_etext)」是指定它以只讀方式啓動並在稍後被複制)。

我知道你特意問起彙編程序,但這聽起來像我以爲你在問什麼。

希望它有幫助!