行内数字的含义是什么 assemble
What is the meaning of numbers in inline assemble
有谁知道下面的代码是做什么的?
我不确定 1、2、3 指的是什么以及它们在这里是如何使用的。 :-(
95 asm volatile("2: wrmsr ; xor %[err],%[err]\n"
96 "1:\n\t"
97 ".section .fixup,\"ax\"\n\t"
98 "3: mov %[fault],%[err] ; jmp 1b\n\t"
99 ".previous\n\t"
100 _ASM_EXTABLE(2b, 3b)
101 : [err] "=a" (err)
102 : "c" (msr), "" (low), "d" (high),
103 [fault] "i" (-EIO)
104 : "memory");
105 return err;
代码来自Linux:http://lxr.free-electrons.com/source/arch/x86/include/asm/msr.h#L91
如果有人能给我一些google它的关键词,我将不胜感激。
非常感谢您!
这些是 local labels(数字后跟一个冒号)。
稍后引用它们时,b
(如 jmp 1b
)表示引用该数字最近的本地标签向后。 f
稍后会在代码中查找匹配的本地标签 (forwards)。
该代码声明了一个异常table,当执行wrmsr
指令发生异常时,错误处理程序(通常在arch/<your_CPU_arch>/mm/fault.c
)搜索异常table相应的条目,然后跳转到那里。
如您所见,该异常的条目将 EIO
移动到 err
,并跳回到 xor
之后的指令(这将清除 err
万一没有错误)。
有谁知道下面的代码是做什么的? 我不确定 1、2、3 指的是什么以及它们在这里是如何使用的。 :-(
95 asm volatile("2: wrmsr ; xor %[err],%[err]\n"
96 "1:\n\t"
97 ".section .fixup,\"ax\"\n\t"
98 "3: mov %[fault],%[err] ; jmp 1b\n\t"
99 ".previous\n\t"
100 _ASM_EXTABLE(2b, 3b)
101 : [err] "=a" (err)
102 : "c" (msr), "" (low), "d" (high),
103 [fault] "i" (-EIO)
104 : "memory");
105 return err;
代码来自Linux:http://lxr.free-electrons.com/source/arch/x86/include/asm/msr.h#L91
如果有人能给我一些google它的关键词,我将不胜感激。
非常感谢您!
这些是 local labels(数字后跟一个冒号)。
稍后引用它们时,b
(如 jmp 1b
)表示引用该数字最近的本地标签向后。 f
稍后会在代码中查找匹配的本地标签 (forwards)。
该代码声明了一个异常table,当执行wrmsr
指令发生异常时,错误处理程序(通常在arch/<your_CPU_arch>/mm/fault.c
)搜索异常table相应的条目,然后跳转到那里。
如您所见,该异常的条目将 EIO
移动到 err
,并跳回到 xor
之后的指令(这将清除 err
万一没有错误)。