2011-01-31 75 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)”是指定它以只读方式启动并在稍后被复制)。

我知道你特意问起汇编程序,但这听起来像我以为你在问什么。

希望它有帮助!