是否有可能喜欢写东西.finished$:,而不是1$:和这个标签仍然是唯一有效,直到下一次没有本地标签定义?
这样它会更具描述性,几个月之后我仍然会知道为什么会这样.当然我可以在旁边写一个评论,但这对(至少对我而言)有点费力.
如果这样的事情是不可能的,那么当然我没有其他可能性(除了编写自定义预处理器).
来自奥地利的问候!
是的。您所指示的 ( .finished$) 效果非常好。
编辑:嗯,我完全错了。抱歉误导了寻求答案的人。
根据我对你的问题的理解,你需要 GNU 中的本地标签as。据我所知,这是不可能的。
标签冲突仅出现在同一个源文件中。如果您将每个函数(这是唯一可以修复的情况)与原始源文件分开,那么它就可以工作。如果它们都在一个函数内,那么您就完成了。这似乎是纯组装的最佳且最易于管理的解决方案。
否则,您可以使用本地符号(不是标签,请参阅注释),例如.L<function_id>_<local_label>,其中.L确保它是文件本地的,但我通常不喜欢它。然而,它确实需要额外的打字。
但是,如果您可以用 C 语言完成大部分工作并使用 GNU 扩展汇编器,GNU 扩展汇编页面指出,在AssemblyTemplate中,您可以选择以下选项:
特殊格式字符串
[...]
'%='
输出整个编译中每个 asm 语句实例唯一的数字。当创建本地标签并在生成多个汇编器指令的单个模板中多次引用它们时,此选项非常有用。
由此,您可以使用.%=labelname:GNU 内联汇编器中的标签,这样就可以工作了。即便如此,你想实现什么目标?某处可能有更好的方法。