In the following line of code (which declares a global variable),
unsigned int __attribute__((section(".myVarSection,"aw",@nobits#"))) myVar;what does the "aw" flag mean?
My understanding is that the nobits flag will prevent the variable from being initialised to zero, but I am struggling to find info about the "aw" flag.
Also, what meaning do the @ and # have around the nobits flag?
解决方案The section("section-name") attribute places a variable in a specific section by producing the following assembler line:
.section section-name,"aw",@progbitsWhen you set section-name to ".myVarSection,"aw",@nobits#" you exploit a kind of "code injection" in GCC to produce:
.section .myVarSection,"aw",@nobits#,"aw",@progbitsNote that # sign starts a one-line comment.
See GNU Assembler manual for the full description of .section directive. A general syntax is
.section name [, "flags"[, @type[,flag_specific_arguments]]]so "aw" are flags:
- a: section is allocatable
- w: section is writable
and @nobits is a type:
- @nobits: section does not contain data (i.e., section only occupies space)
All the above is also applicable to functions, not just variables.
更多推荐
“aw"是什么意思?部分属性中的标志是什么意思?
发布评论