" 'ASM'에서 불가능 제약". 컴파일러는 응답 GCC testasm.c의 -otestasm
: " 'ASM'에서 불가능 제약"나는 testasm.c
으로 다음 코드를 저장하고 그것을 컴파일.리눅스 어셈블러 오류가 나는 리눅스에서 어셈블러로 시작하고
#include <stdio.h>
int main(void)
{
int foo=10,bar=15;
__asm__ __volatile__ ("addl %%ebx,%%eax"
: "=eax"(foo)
: "eax"(foo), "ebx"(bar)
: "eax"
);
printf("foo = %d", foo);
return 0;
}
이 문제를 어떻게 해결할 수 있습니까? (나는 here에서 예를 복사했습니다.)
데비안 레니, 커널 2.6.26-2-AMD64
GCC 버전 4.3.2 (데비안 4.3.2-1.1)
해결 :
허용되는 답변보기 - 수정 된 절이 더 이상 지원되지 않는 것 같습니다.
감사합니다. 더 이상 '수정 된'절이 마음에 들지 않으므로 내가 바꿀 때마다 & 밀어 넣어야 할 것입니다. – slashmais
수정 된 절은 여전히 작동합니다. 문제는 "출력"이 암시 적으로 "수정 됨"을 지정하므로 두 필드 모두에서 나타나는 eax를 사용하는 것이 문제의 원인이라고 생각합니다. –