像 .size X,.-X 这样的代码模式是什么意思?

8
我的问题是关于一些广为流传但文档不全的代码,我在ARM Cortex M启动文件中发现了这种代码,例如此STM32
这种“模式”如下:
.size X,.-X

其中X是符号或标签。

我找到了这个答案,了解了.size指令和点特殊符号的工作原理,但整行代码似乎对我没有任何作用。操作.-X的结果未被存储在任何地方。

有人可以解释一下这行代码的作用吗?


1
结果将由.size指令自动存储在元数据中。 - Jester
1
大小计算与 NASM 中的 $ - X 完全相同:NASM 中的 $ 究竟是如何工作的?。但 .size 指令会发出带有函数大小的 ELF 元数据,这对于共享库非常有用。 - Peter Cordes
1
谢谢你的回答!如果我不在函数后面放置这段代码会发生什么?它只会对优化产生负面影响还是我的代码无法按预期工作? - FemtoFarad
2
忽略它的影响是像在Symtab中以大小0出现ARM汇编函数之类的事。我不确定静态或动态链接的正确性是否会受到影响。但这只是元数据,所以如果它能正常工作,则没有任何性能影响。 - Peter Cordes
如果您错过了它,可能会影响汇编程序调试的效果,原因在上面的注释中。 - Realtime Rik
1个回答

7

这是放在函数X末尾的,函数大小是函数结尾和开头之间的差值。 . 是当前位置,因此它表示 .size x 是这里和标签 x 之间的差值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接