Advertisement
AntonioVillanueva

C++ & inline assemble acceso a struct

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