我在C函数中使用汇编代码。但是gcc对以下代码给出了unsupported instruction 'mov'
错误:
uint32_t faulting_address;
asm volatile("mov %%cr2, %0" : "=r" (faulting_address));
我不明白这有什么问题。
答案 0 :(得分:0)
语法是正确的,但错误很可能是因为您正在为64位目标进行编译,在这种情况下mov
需要为64位。只需将faulting_address
更改为uint64_t
即可进行编译。
或者,如果你想要它是32位,你需要使用-m32
或其他类似的选项来编译32位目标。