2014년 3월 17일 월요일

/*
 * main.cpp
 *
 *  Created on: 2014. 3. 17.
 *      Author: info
 */

#include


void func_A(unsigned int ptr[10]){
asm ("movl 0x4%0, %%edi; \n\t"

   "movl %%edi, %0; \n\t"
"addl %%edi, 4%0; \n\t"
"addl %%edi, 8%0; \n\t"
"rol %%edi \n\t"
"rol %%edi \n\t"
"rol %%edi \n\t"
"movl %%edi, 12%0; \n\t"

  :        /* output */
  :"m" (ptr[0]),"m" (ptr[1])
  :"eax","edi","esi","ebx","memory"
  );
}

int main(){

  int a=10, b;
  int c=123;
  unsigned int ptr[10]={0,1,2,3,4,};


  ptr[0]=ptr[0]<<1 p="">
  func_A(ptr);
  //mov 0x14(%esp),%eax

  /*asm ("movl 0x14(%0), %%edi; \n\t"
     "movl %4,%%eax; \n\t"

     "movl 0x14(%%esp),%%edi; \n\t"
     "movl 0x14(%%esp),%%esi; \n\t"

     "movl 0x14(%%esp),%%ebx; \n\t"
     "movl 0x14(%%esp),%%ecx; \n\t"

     "addl $4, 0x14(%%esp); \n\t"



      "movl %%eax, %0; \n\t"
     :"+r" (*ptr)
     :"m"(b),"m" (ptr[0]),"m" (ptr[1]),"m" (ptr[2]),"m" (ptr[3]),"m" (ptr[4]),"m" (ptr[5]),"m" (ptr[6]),"m" (ptr[7]),"m" (ptr[8]),"m" (ptr[8]),"m" (ptr[8]),"m" (ptr[8]),"m" (ptr[0]),"m" (ptr[1]),"m" (ptr[2]),"m" (ptr[3]),"m" (ptr[4]),"m" (ptr[5]),"m" (ptr[6]),"m" (ptr[7]),"m" (ptr[8]),"m" (ptr[8]),"m" (ptr[8]),"m" (ptr[8]),"m"(a)
     :"eax","edi","esi","ebx","ecx","memory"
     );*/


 b=ptr[2];


 printf("%d, ",b);

 printf("%d, %d, %d,%d",ptr[1],ptr[2],ptr[3],ptr[4]);

 return 0;
}

댓글 없음:

댓글 쓰기