【发布时间】:2018-04-29 05:18:44
【问题描述】:
$ clang --version
clang version 5.0.0 (tags/RELEASE_500/final)
.
CC ../../py/nlrthumb.c
../../py/nlrthumb.c:79:5: error: non-ASM statement in naked function is not supported
return 0; // needed to silence compiler warning
为什么 Clang 不支持non-ASM statement in naked function?
这在gcc 上运行良好。
裸函数没有序言或结语,所以这样做 内联汇编以外的任何东西的代码生成将完全 命中或错过。
那么gcc怎么能做到呢?
【问题讨论】:
-
@negacao 用你的信息更新了问题。
-
“gcc 怎么做” - 它doesn't。 只有基本的 asm 语句可以安全地包含在裸函数中。虽然使用扩展 asm 或基本 asm 和 C 代码的混合似乎可以工作,但它们不能可靠地工作并且不受支持。
标签: clang inline-assembly llvm-clang