You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCC内联汇编中%object与@object的含义及架构差异是什么?

你对GEN_ABSOLUTE_SYM_KCONFIG宏的展开逻辑、#是C预处理器字符串化操作符的理解完全正确。下面逐一解答你的疑问:

%object的含义与非宏参数的原因

.type是GNU汇编器(GAS)的内置伪指令,作用是给指定符号设置类型属性,供链接器做符号校验、段处理时使用。%object是.type伪指令的固定语法组成部分,作用是声明当前符号的类型为数据对象,不属于C宏的参数范畴,因此不需要出现在宏的形参列表中。

前缀%的作用与架构关联性

这个前缀是不同架构的GNU汇编语法中,用来标识后续标识符是类型关键字的分隔符,避免和同名普通符号产生语法歧义。%作为类型前缀是ARM、ARM64架构下GAS的标准语法要求。

x86版本中@object和%object的区别

二者功能完全一致,仅为不同架构的汇编语法差异:x86(含32位、64位)架构的GNU汇编规定,类型关键字的前缀必须使用@,因此Zephyr在做跨架构适配时,对x86平台做了单独的写法适配。


内容的提问来源于stack exchange,提问作者smwikipedia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:45:02