:GCC 인라인 어셈블러 암시 적 함수 선언 나는 여러 번에게 다음과 같은 매크로 호출 코드를 컴파일하기 위해 노력하고있어
#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 내가
error: expected ')' before ':' token
를 얻을라고 오류 알림.
그리고 오류 코드는 다음과 같습니다../../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를 사용하고 asm
가 일반적이다, 아치는 태그의 PowerPC (32 비트)을하고 OS는 C 표준 (부록 J.5.10)에 따르면, FreeBSD의
'mul.c '를 컴파일 할 때 확장자를 허용하지 않는'gcc' 플래그를 사용하지 않습니다 (예 :'-ansi' 또는'-std = c99')? – nickie
-std = c99를 사용하면 확장 기능을 사용할 수 없습니까? – dhein