如何在icc中使用gcc内联汇编?

时间:2012-02-16 11:08:57

标签: gcc g++ icc

我在gcc内联汇编样式中使用内联汇编具有以下C代码

asm goto("1: jmp %l[t_no]\n"
      "2:\n"
      ".section .altinstructions,\"a\"\n"
      " .long 1b - .\n"
      " .long 0\n"
      " .word %P0\n"
      " .byte 2b - 1b\n"
      " .byte 0\n"
      ".previous\n"
      : : "i" (bit) : : t_no);

我想用icc编译它,但编译时出错:

error: invalid constant in assembly language instruction  
asm goto("1: jmp %l[t_no]\n"  

如何解决问题?谢谢。

2 个答案:

答案 0 :(得分:0)

我相信你应该使用-fasm-blocks命令行选项。

答案 1 :(得分:0)

icc支持Intel(nasm)和GNU汇编程序样式。

对于Gnu语法,请使用__asm__原语:

__asm__ ("
   movq %rsp, %rbpn
");

对于英特尔语法,请使用__asm{}

__asm{
  mov      rbp, rsp;
}