3
C 코드에서 인라인 어셈블리를 사용하는 방법을 배우려고합니다. 나는 두 개의 정수를 추가해야하는 작은 프로그램을 만들었습니다C에서 인라인 어셈블리가 제대로 작동하지 않습니다.
목적은, 레지스터%r8
및
%r9
에
a
및
b
로드를 추가 한 다음
a
다시 출력을 넣어했다
int main(){
int a=1;
int b=2;
asm( "movl %0, %%r8d;"
"movl %1, %%r9d;"
"addl %%r8d, %%r9d;"
"movl %%r9d, %1;"
: "=r" (a)
: "r" (b)
:"%r8","%r9");
printf("a=%d\n",a);
return 0;
}
. 그러나이 프로그램은 a=3
대신 a=2
을 인쇄합니다. 문제가 인라인 기술 또는 어셈블리 자체에 있는지 확실하지 않습니다.
감사합니다! 두 번째 오류는 작동하지 않는 것을 보았을 때 방금 변경 한 것입니다. 그래서 나는 아마도 잘못된 레지스터를 사용하고있을 것이라고 생각했습니다. 이제 작동합니다! –