gpt4 book ai didi

assembly - 是否可以在 GNU Assembler 中定义命名的美元本地标签?

转载 作者:行者123 更新时间:2023-12-04 08:48:47 24 4
gpt4 key购买 nike

是否可以写类似 .finished$: 的内容?而不是 1$:并且这个标签在定义下一个非本地标签之前仍然有效?

这样它会更具描述性,几个月后我仍然会知道为什么会出现这种情况。
当然,我可以在它旁边写一条评论,但这会(至少对我而言)有点费力。

如果这样的事情是不可能的,那么我当然没有其他可能性(除了编写自定义预处理器)。

来自奥地利的问候!

最佳答案

是的。您所指出的( .finished$ )非常有效。

编辑:好吧,我完全错了。很抱歉误导人们寻找答案。

根据我对您的问题的理解,您需要 GNU 中的本地标签 as .据我所知,这是不可能的。

标签冲突仅在同一个源文件中发现。如果您将每个函数(这是唯一可以解决的情况)与原始源文件分开,那么它将起作用。如果它们都在一个函数中,那么你就完成了。这似乎是纯组装中最好和最易于管理的解决方案。

否则,您可以使用局部符号(不是标签,请参阅注释),例如 .L<function_id>_<local_label> ,其中.L确保它是文件本地的,但我通常不喜欢它。但是,它确实需要额外的输入。

但是,如果您可以在 C 中完成大部分工作并使用 GNU 扩展汇编程序,the GNU extended assembly page请注意,在 AssemblyTemplate 中,您有以下选项:

Special format strings
[...]
'%='
Outputs a number that is unique to each instance of the asm statement in the entire compilation. This option is useful when creating local labels and referring to them multiple times in a single template that generates multiple assembler instructions.



从那以后,您可以使用像 .%=labelname: 这样的标签。来自 GNU 内联汇编器,它将起作用。即便如此,你想完成什么?某处可能有更好的方法。

关于assembly - 是否可以在 GNU Assembler 中定义命名的美元本地标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24872130/

24 4 0