asm指令中的未知操作码^

时间:2015-04-22 06:23:31

标签: c++ assembly

我在Linux上使用英特尔编译器来处理以下小型测试用例。

void a() {
    __asm xor rax,rax
}

void b() {
    b();
}

如果用icpc编译我会收到错误。 a_s.c(3): (col. 22) error: Unknown opcode ^ in asm instruction.

如果用icc编译,那么一切都OK。所以它以某种方式连接到C ++方言。

如果我用xor rax,rax覆盖{ }(即{xor rax,rax}),那么icpc就会开始编译而没有问题。

如果我尝试使用g ++(我不知道MS风格的asm是怎么回事)我也会看到关于" ^"令牌。

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

这是英特尔C ++编译器或某些C ++标准中的错误,禁止使用内联asm这样的方式没有大括号吗?

谢谢。

0 个答案:

没有答案