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

时间:2014-08-13 19:35:04

标签: c linux-kernel inline-assembly

在linux内核中,您可以按如下方式找到程序集:

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

当像这样使用时

DEFINE(NR_PAGEFLAGS, __NR_PAGEFLAGS);

生成以下程序集

->NR_PAGEFLAGS $24 __NR_PAGEFLAGS

显然是有效的装配。这是做什么的?

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

1 个答案:

答案 0 :(得分:5)

这是无效的程序集。它使用sed脚本转换为类似:

#define NR_PAGEFLAGS 24

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