|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 69
|
[ASSEMBLY] Riconoscere variabili
Salve a tutti,
ho dei sorgenti asm e ho bisogno di identificare le variabili, io da ignorante in materia pensavo le uniche variabili fossero i registri. In realtà approfondendo ho capito che ci sono diversi modi per maneggiare variabili con l'x86. Volevo chiedere a voi qualche dritta, io devo controllare i movimenti anomali delle variabili e un'idea ce l'ho. Il problema è che prima di farlo devo individuarle nei files *.asm! Grazie a tutti |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
No aspè, chiariamo. Le variabili per il processore non esistono. Lui vede solo locazioni di memoria.
Esiste però un modo di definire le variabili in assembly. Ma questo vale quando scrivi tu un programm assembly. Sono quelle cose definite con db, dw, ecc... Se invece, come sospetto di aver capito, hai in mano dei file disassemblati da un binario, allora non ci sarà nulla nei sorgenti che sintatticamente rasenterà il concetto di variabile. Vedrai solo dei dati che vengono spostati avanti e indietro in memoria, sommati, divisi, ecc.... Le uniche variabili "visibili" sono quelle locali, perchè vengono memorizzate nello stack frame corrente. I registri invece non sono variabili, almeno non nel senso classico del termine. Contengono valori, li puoi usare per fare operazioni, leggere/scrivere valori, ma non sono variabili. |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Nov 2007
Messaggi: 69
|
Grazie della risposta, seguendo i tuoi consigli ho riletto il codice notando questo:
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Il motivo è legato al fatto che in linguaggio macchina le variabili ( non locali ) corrispondono a locazioni di memoria. Il nome è una semplice etichetta che serve a facilitare la vita al programmare e gli permette di riferirsi ad una certa locazione di memoria usando un nome facile da ricordare.
Per esempio, le prime due istruzioni riservano 16 e 16 bit in memoria. Quei valori li troverai effettivamente in memoria, ma nel codice assembly non potrai riferirti a quelle locazioni di memoria usando un nome simbolico facile da ricordare. Dal punto di vista della macchina quelle 4 sono uguali, dal punto di vista del programmatore no. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 69
|
Giusto dimenticavo questo particolare. Grazie mille dei chiarimenti
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:31.



















