在linux内核中,您可以按如下方式找到程序集:
#define DEFINE(sym, val) \
asm volatile("\n->" #sym " %0 " #val : : "i" (val))
当像这样使用时
DEFINE(NR_PAGEFLAGS, __NR_PAGEFLAGS);
生成以下程序集
->NR_PAGEFLAGS $24 __NR_PAGEFLAGS
显然是有效的装配。这是做什么的?
这个asm如何定义一个变量?请指出任何更详细解释这一点的文档。谢谢!
答案 0 :(得分:5)
这是无效的程序集。它使用sed脚本转换为类似:
#define NR_PAGEFLAGS 24
这个文件随后包含在许多汇编源文件中,这允许在汇编程序文件中使用C常量表达式的结果。