【发布时间】:2015-08-30 12:22:46
【问题描述】:
我的内核模块代码中的内联汇编如下:
u64 cade_seg;
__asm__ __volatile__ ("mov %%cs %0": "=r" (code_seg));
但是,当它编译(作为内核模块)时,会抛出“注册后垃圾rax”的错误。上面的内联汇编代码有什么问题吗?
更新:通过将%%cs 替换为其他寄存器,例如%%rax,错误仍然存在。
【问题讨论】:
-
如果你使用intel语法,而不是AT&T,那么cs寄存器应该是mov指令的第二个参数
-
这不是原因...(交换后仍然是相同类型的错误)
标签: kernel inline-assembly cpu-registers