【发布时间】:2013-04-29 16:34:55
【问题描述】:
我遇到的大多数 ARM 汇编程序都使用 .data 和 .text 节指令。但是,我注意到两件事:
很多时候,GCC 编译器本身生成的汇编代码只会使用 .text 指令,在代码中的某处不使用 .data 指令对变量进行分组。
即使我不使用 .text 部分,我的程序仍然可以正常编译和运行。
我的问题:这些指令是必需的吗?如果是,为什么?如果是,为什么没有它们我的程序仍然可以运行?
【问题讨论】:
-
您确定 variables gcc 组不是 constants 吗?这有时称为
.rodata等。这些部分和.bss一样是相当标准的。正如 Etienne 所指出的,您的 linker 和操作系统(或缺少)决定了它们是否需要。例如,对于解析 Elf 文件的 Linux,将需要它们。对于 bare metal 应用程序,您可以随意调用这些部分,只要它与链接器的符号匹配即可。