似乎两者都在发挥作用。
但.SECTION
是什么意思?为什么它是大写的?
我找不到gdb'info文件'或'反汇编主'
的任何区别答案 0 :(得分:1)
为什么它是大写的?
汇编指令似乎不区分大小写,基于:
TOLOWER
未定义,则对指令和说明使用TC_CASE_SENSITIVE
git grep
所说的所有拱门除了binutils 2.25中的metag
以外的情况现在适用于.data
vs .section .data
。
<强>文档强>
此指令仅支持实际支持任意命名部分的目标;例如,在a.out目标上,即使使用标准的a.out节名称,它也不被接受。
因此可移植性较差且可配置性较强,因为您可以向其传递自定义标志以使用参数控制节属性
.section name [, "flags"[, @type[,flag_specific_arguments]]]
经验测试
对GAS 2.24进行快速测试ELF Linux x86-64显示它们为简单输入提供相同的输出:
A.S:
.data
i: .int 1
b.S:
.section .data
i: .int 1
比较
as -o a.o a.S
as -o b.o b.S
cmp a.o b.o
echo $?
源代码
对于ELF,.section
由config/obj-elf.c#obj_elf_section()
.data
由read.c#s_data处理。
TODO:如果.section .data
没有任何参数与.data
相同而不是
答案 1 :(得分:0)
.section似乎是用于定义带有名称和/或标志的部分的指令。 .data是初始化数据的预定义部分。
这只是猜测,但我认为.section .data可能是一个接一个的两个部分:第一个是未命名的,没有标志,没有内容,另一个是.data-section。