n° 219
Novembre 2017
Dicembre 13, 2017, 07:19:51 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: 1 [2]   Vai giù
  Stampa  
Autore Discussione: Accedere all'area di memoria di una struct puntata da Puntatore in altra Struct  (Letto 2882 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
oregon
Jr. Member
**

Karma: +22/-6
Scollegato Scollegato

Messaggi: 239


Mostra profilo
« Risposta #15 inserita:: Settembre 13, 2016, 01:37:35 »

Per completezza (considerando che ho compilato a 32 bit e quindi ho usato 4 e non 8 ), la linea

struct Secondaria *ps = (struct Secondaria *)(*((unsigned long int *)((unsigned char *) pr + 4)));

corrisponde alle istruzioni

mov   eax,dword ptr [pr]  
mov  ecx,dword ptr [eax+4]  
mov  dword ptr [ps],ecx  

e in particolare la seconda, come vedi, aggiunge correttamente 4 locazioni a quelle di eax (base struttura).

Se non usi il cast, come nella riga

struct Secondaria *ps = (struct Secondaria *)(*((unsigned long int *)( pr + 4)));

le istruzioni saranno

mov     eax,dword ptr [pr]  
mov     ecx,dword ptr [eax+20h]  
mov     dword ptr [ps],ecx

e in particolare la seconda aggiungerà 20h locazioni all'indirizzo di base finendo chissà dove.
Registrato
vuott
Newbie
*

Karma: +2/-1
Scollegato Scollegato

Messaggi: 31


Mostra profilo
« Risposta #16 inserita:: Settembre 14, 2016, 11:32:36 »

Grazie ancora.
Registrato
Pagine: 1 [2]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines