gpt4 book ai didi

gcc 内联 asm 模板,用于不带哈希的常量

转载 作者:行者123 更新时间:2023-12-02 01:24:11 24 4
gpt4 key购买 nike

我正在尝试发出基于#define VALUE 的全局符号。我的尝试如下:

__asm__ (".globl SYMBOL");
__asm__ (".set SYMBOL, %0" :: "i" (VALUE));

gcc 向汇编器发出的内容如下:

.globl SYMBOL
.set SYMBOL, #VALUE

如何删除 .setVALUE 之前的哈希值。 FWIW,我的目标是 ARM。

最佳答案

armclang定义了各种template modifiers可以与内联汇编一起使用。 gcc 在我检查过的每个实例中都支持它们,尽管它没有记录这一点。

特别是

c

Valid for an immediate operand. Prints it as a plain value without a preceding #. Use this template modifier when using the operand in .word, or another data-generating directive, which needs an integer without the #.

所以你可以这样做

__asm__ (".set SYMBOL, %c0" : : "i" (VALUE));

Try on godbolt

(gcc bugzilla 上有一些 Unresolved 错误,建议应记录模板/操作数修饰符。主要的似乎是 30527 ,我刚刚在那里发表了一条评论。开发人员的观点似乎是操作数修饰符是“编译器内部结构”,不适合最终用户,但特别是对于arm/aarch64,有一些简单的事情你无法以任何其他方式做。他们制作了 an exception for x86 ,那么为什么不在这里呢?)

关于gcc 内联 asm 模板,用于不带哈希的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75192720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com