内联asm调用给出了错误

时间:2014-08-24 02:24:01

标签: c gcc inline-assembly

我在C函数中使用汇编代码。但是gcc对以下代码给出了unsupported instruction 'mov'错误:

uint32_t faulting_address;
asm volatile("mov %%cr2, %0" : "=r" (faulting_address));  

我不明白这有什么问题。

1 个答案:

答案 0 :(得分:0)

语法是正确的,但错误很可能是因为您正在为64位目标进行编译,在这种情况下mov需要为64位。只需将faulting_address更改为uint64_t即可进行编译。

或者,如果你想要它是32位,你需要使用-m32或其他类似的选项来编译32位目标。