gcc asm 에 관하여 질문있습니다.

kkchlove의 이미지

int asm_memcpy(unsigned long long *pDst)
{
__asm__ volatile (
"mov $10, %%eax \n\t"
"mov %%eax, %0 "
:"=g"(pDst)
:
);

return 1;
}

int main()
{
unsigned long long nData = 0;

asm_memcpy(&nData);

printf("nData = %d\n", nData);

return 0;
}

코드를 위와같이 작성했습니다... 궁금한것이... 포인트를 넘기면... 어떻게 그 소에 값을 쓸수 있는가 입니다... 아...
일이 진행이 안되서 답답합니다... 도와주세요... ㅜㅜ

grassman의 이미지

__asm__ volatile (
    "mov $10, %0\n\t"
    :"=m"(*pDst)
    :
);

fox9의 이미지

http://wiki.kldp.org/wiki.php/DocbookSgml/GCC_Inline_Assembly-KLDP

위 링크가 조금 도움이 될 것 같습니다.