0

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"  

問題を解決するには?ありがとうございました。

4

2 に答える 2

0

icc は Intel (nasm) と GNU アセンブラー スタイルの両方をサポートします。

Gnu 構文では、__asm__プリミティブを使用します。

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

Intel 構文の使用の場合__asm{}:

__asm{
  mov      rbp, rsp;
}
于 2012-02-16T11:23:58.173 に答える
0

I believe you should use the -fasm-blocks command line option.

于 2012-02-16T11:15:45.950 に答える