" #sym " %0 " #val : : "i-6ren">
gpt4 book ai didi

c - 这个内联汇编如何定义一个变量?

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:10 25 4
gpt4 key购买 nike

在 linux 内核中你可以找到如下汇编:

#define DEFINE(sym, val) \
asm volatile("\n->" #sym " %0 " #val : : "i" (val))

像这样使用时

DEFINE(NR_PAGEFLAGS, __NR_PAGEFLAGS);

生成以下程序集

->NR_PAGEFLAGS $24 __NR_PAGEFLAGS

这显然是有效的程序集。这是做什么的?

这个asm是怎么定义一个变量的?请指出任何更详细地解释这一点的文档。谢谢!

最佳答案

这不是有效的程序集。它使用 sed 脚本转换成如下内容:

#define NR_PAGEFLAGS 24

此文件随后被许多汇编源文件包含,这允许在汇编文件中使用 C 常量表达式的结果。

关于c - 这个内联汇编如何定义一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25294649/

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