2018년 5월 25일 금요일

c언어 가변인자 에 관한 좋은 예

// 32비트 gcc4.4.3 기준
// 64비트에서는 가변인자 전달 구조가 완전 다름
#include
#include

int fun(int a, ...){
      va_list va;
      int wow;

      va_start(va, a);
      printf("%d\n", *(int*)va);
      va_end(va);

      __asm__ __volatile__ (
                 "mov %%ebp, %%eax     \n\t"
                 "add $12, %%eax  \n\t"
                 "mov %%eax, %0  \n\t"
                 : "=m"(wow));

      printf("%d\n", *(int*)wow);
}

void main(){
      int a = 1;
      fun(a,2,3,4);
}


#결과
2
2

댓글 없음:

댓글 쓰기