Assembly 这里的.size指令有什么作用吗?

Assembly 这里的.size指令有什么作用吗?,assembly,llvm,gnu-assembler,powerpc,Assembly,Llvm,Gnu Assembler,Powerpc,我目前正在尝试使用LLVM 3.7.1在x86-64主机上为powerpc64le目标交叉编译musl 1.1.18。无法在下面显示的文件/代码上编译,错误为“.end”指令中出现意外标记这不是我的问题。 发件人: 我的问题是:这里的.size指令有什么作用吗,.end指令表示文件结束,不再处理任何内容。我在这里遗漏了什么吗?这似乎是GNU汇编程序的一个未记录的特性。显然,它用于以ECOFF格式发出调试信息。看见 及 /*特定于ECOFF的调试信息*/ {“aent”,ecoff指令,1}, {

我目前正在尝试使用LLVM 3.7.1在x86-64主机上为powerpc64le目标交叉编译musl 1.1.18。无法在下面显示的文件/代码上编译,错误为“.end”指令中出现意外标记这不是我的问题。

发件人:


我的问题是:这里的
.size
指令有什么作用吗,
.end
指令表示文件结束,不再处理任何内容。我在这里遗漏了什么吗?

这似乎是GNU汇编程序的一个未记录的特性。显然,它用于以ECOFF格式发出调试信息。看见 及

/*特定于ECOFF的调试信息*/
{“aent”,ecoff指令,1},
{“begin”,ecoff\u指令\u begin,0},
{“bend”,ecoff_指令_bend,0},
{“end”,ecoff_指令_end,0},

很有趣!因此,假设我没有使用ECOFF格式,删除
.end
指令可能不会造成任何伤害,对吗?即使是这样,我也会说,如果调试器无法处理
.size
发出的元数据,那么只会损失查看函数范围的能力。
    .global __syscall
    .hidden __syscall
    .type   __syscall,@function
__syscall:
    mr      0, 3                  # Save the system call number
    mr      3, 4                  # Shift the arguments: arg1
    mr      4, 5                  # arg2
    mr      5, 6                  # arg3
    mr      6, 7                  # arg4
    mr      7, 8                  # arg5
    mr      8, 9                  # arg6
    sc
    bnslr+       # return if not summary overflow
    neg     3, 3 # otherwise error: return negated value.
    blr
    .end    __syscall
    .size   __syscall, .-__syscall