1

我尝试在 msasm 中执行与 icc 内联的汇编程序:

int main (void)
{
  __asm{
    mov eax, 5h;  //works
    push eax;     // after shell command /opt/intel/bin/icc -use_msasm asm.c:
                  // asm.c(7): (col. 5) error: Unsupported instruction form in asm                          
                  // instruction push.

   //pop ebp;    // the same 
        };

printf("success!\n");
return 1;
}

有人知道为什么 icc 不接受推送和弹出吗?

提前致谢!

4

1 回答 1

1

您应该改用 x64 版本的寄存器。所以正确的版本应该是这样的:

__asm{
    mov rax, 5h;
    push rax;
};

此外,在处理指针、0x8******* 等时,请注意架构差异。在未先阅读内联内容的情况下,切勿使用批量查找和替换。

于 2018-07-19T08:16:48.167 回答