Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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++_Assembly - Fatal编程技术网

C++ asm指令中的未知操作码^

C++ asm指令中的未知操作码^,c++,assembly,C++,Assembly,我在Linux上使用英特尔编译器进行以下小测试用例 void a() { __asm xor rax,rax } void b() { b(); } 如果用icpc编译,我会得到一个错误。 a_.s.c(3):(第22列)错误:asm指令中的操作码未知。 如果使用icc编译,则一切正常。因此它与C++方言有某种联系。 如果我用{}(即{xor-rax,rax})覆盖xor-rax,rax),则icpc开始编译而没有问题 如果我尝试使用g++(我不知道这对于MS风格的asm是如

我在Linux上使用英特尔编译器进行以下小测试用例

void a() {
    __asm xor rax,rax
}

void b() {
    b();
}
如果用icpc编译,我会得到一个错误。
a_.s.c(3):(第22列)错误:asm指令中的操作码未知。

如果使用icc编译,则一切正常。因此它与C++方言有某种联系。 如果我用
{}
(即
{xor-rax,rax}
)覆盖
xor-rax,rax
),则icpc开始编译而没有问题

如果我尝试使用g++(我不知道这对于MS风格的asm是如何正确的),我也会看到关于“^”标记的抱怨

<> P>英特尔的C++编译器中有bug吗?还是有C++标准禁止使用无括号的内联ASM?< /P>

谢谢。

<代码> XOR <代码>在C++中几乎是字面意思是代码> ^ < /代码>。请参阅,您确定您的头中没有一个讨厌的宏,例如“代码> >定义XOR ^ < /COD>?例如,<代码> ISO64 6. H/COD>将有一个<代码>定义XOR ^ <代码>。@ MichaelBurr,它不应该在C++中,仅C.在C++中作为关键字或运算符的标识符不得定义为C++标准库标题中的宏,特别是带有注释的宏,包括标准标题effect@chris即使标准禁止它,它也可能影响C++。我知道它通常适用于MSVC(但不适用于GCC)。我不知道英特尔的编译器。
bash-3.2$ g++ a_s.c
a_s.c: In function 'void a()':
a_s.c:3: error: expected `(' before '^' token
a_s.c:3: error: expected primary-expression before '^' token