我在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"
如何解决问题?谢谢。
答案 0 :(得分:0)
我相信你应该使用-fasm-blocks命令行选项。
答案 1 :(得分:0)
icc支持Intel(nasm)和GNU汇编程序样式。
对于Gnu语法,请使用__asm__
原语:
__asm__ ("
movq %rsp, %rbpn
");
对于英特尔语法,请使用__asm{}
:
__asm{
mov rbp, rsp;
}