【发布时间】:2013-09-05 15:56:57
【问题描述】:
我正在尝试编译多次调用以下 makro 的代码:
#define MULADD(i, j) \
asm( \
" mullw 16,%6,%7 \n\t" \
" addc %0,%0,16 \n\t" \
" mulhwu 16,%6,%7 \n\t" \
" adde %1,%1,16 \n\t" \
" addze %2,%2 \n\t" \
:"=r"(c0), "=r"(c1), "=r"(c2):"0"(c0), "1"(c1), "2"(c2), "r"(i), "r"(j):"16");
在哪里调用了 MULAD,我得到了
错误:在 ':' 标记之前需要 ')'
错误通知。
错误代码如下所示:
../../src/math/mul.c: In function 'mul_comba':
../../src/math/mul.c:787: warning: implicit declaration of function 'asm'
../../src/math/mul.c:787: error: expected ')' before ':' token
../../src/math/mul.c: In function 'mul_comba_small':
../../src/math/mul.c:816: error: expected ')' before ':' token
我不知道我做错了什么,隐式声明是什么意思?
据我所知asm() 是编译器保留的,因此不是必须声明的函数,对吗?如果是这样,我必须包括什么?我真的没有知识。
编辑: 我正在使用 gcc 4.2.1,arch 标记为 powerpc (32Bit),操作系统是 freeBSD 9.2
【问题讨论】:
-
在编译
mul.c时,您没有使用任何gcc的不允许扩展的标志(例如-ansi或-std=c99),是吗? -
我正在使用 -std=c99 这是否不允许扩展?
标签: c gcc freebsd inline-assembly powerpc