Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 内联asm调用产生错误_C_Gcc_Inline Assembly - Fatal编程技术网

C 内联asm调用产生错误

C 内联asm调用产生错误,c,gcc,inline-assembly,C,Gcc,Inline Assembly,我在C函数中使用汇编代码。但gcc对以下代码给出了不支持的指令“mov”错误: uint32_t faulting_address; asm volatile("mov %%cr2, %0" : "=r" (faulting_address)); 我不明白这是怎么回事。语法是正确的,但错误很可能是因为您正在为64位目标编译,在这种情况下,mov需要为64位。只需将faulting\u address更改为uint64\u t,它就会编译 或者,如果您希望它是32位的,您需要使用-m32或其

我在C函数中使用汇编代码。但gcc对以下代码给出了
不支持的指令“mov”
错误:

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

我不明白这是怎么回事。

语法是正确的,但错误很可能是因为您正在为64位目标编译,在这种情况下,
mov
需要为64位。只需将
faulting\u address
更改为
uint64\u t
,它就会编译


或者,如果您希望它是32位的,您需要使用
-m32
或其他类似选项为32位目标编译。

使用AT&T语法。谢谢您,我尝试了
asm volatile(“movl$0,%%cr2”:“=r”(faulting_address))
,但没有任何变化。-m32为我工作,谢谢。我应该使用-melf_i386链接这些文件吗?