Advertisement
AntonioVillanueva

C++ inline assembly access struct + name

Jan 26th, 2016
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. int teta (75);
  4. int main(){
  5.     struct Incidencia {
  6.         char carretera [8];//8
  7.         int km;//2
  8.         char problema[128];//128
  9.     };//138
  10.    
  11.     Incidencia i[]={
  12.         {"NII",2,"atasco"},
  13.         {"A18",69,"nieve"},
  14.         {"A152",115,"meteorito"}       
  15.     };
  16.    
  17.     int km(0) ,size (sizeof (Incidencia));//140
  18.     char a[128],b[128];
  19.     int deslplazamiento(8);
  20.    
  21.     __asm__(
  22.     "INICIO :"
  23.     "nop \n\t"
  24.     /*ojo si trabajas en 32 64  ebx debe ser rbx edx rdx .... !*/
  25.     "lea (%[entrada]),%%ebx\n\t"/* carga la direccion de base de i de struct incidencia */
  26.     "mov %3,%%edx \n\t"/* carga el valor %3 size en el registro %edx */
  27.     "mov 8(%%edx,%%ebx,1),%2 \n\t"/* accede a km tras los 8 char de carretera*/
  28.  
  29.    
  30.     :"=g"(a) , "=g"(b),"=g"(km) ,"=m" (size),"=c" (deslplazamiento)/* %0 %1 %2 %3 %4 */
  31.     :[entrada]"r"(i) /* %5*/
  32.  
  33.     );
  34.     cout<<"size "<<size<<endl;
  35.     cout<<km<<endl;
  36.    
  37.     return 0;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement