Как использовать встроенную сборку gcc в icc? - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть следующий код C со встроенной сборкой в ​​стиле встроенной сборки gcc

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 голосов
/ 16 февраля 2012

icc поддерживает стили ассемблера Intel (nasm) и GNU.

Для синтаксиса Gnu используйте примитив __asm__:

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

Для синтаксиса Intel используйте __asm{}:

__asm{
  mov      rbp, rsp;
}
0 голосов
/ 16 февраля 2012

Полагаю, вам следует использовать параметр командной строки -fasm-blocks .

...