|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
[assembly - effective address]
Ragazzi, qualcuno riesce a spiegarmi la storia del calcolo dell'indirizzo effettivo?? su un manuale ho trovato:
Effective address = base register + (index register * scale factor) + displacement scale factor, ancora ignoro a cosa si riferisca riuscite anche a farmi un esempio con due righe di codice ASM ? Grazie. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
|
Quote:
base è come l'indirizzo di partenza di un array index è l'indice dell'elemento a cui vuoi accedere scale è la dimensione di ogni singolo elemento dell'array displacement è un'ulteriore offset (penso che sia poco usato) Capisci meglio con un po' di codice a più alto livello (se così si può definire il C) base[index] ovvero accedi all'index-esimo elemento dell'array che inizia all'indirizzo base. La dimensione degli elementi è "nascosta" (ci pensa il calcolatore a fare la moltiplicazione index*scale) in quanto è definita dal tipo dell'array. Se si tratta di un array di int (int[]), su un architettura 32bit la dimensione di ogni elemento sarà di 4 byte. Considerando un array di int chiamato base, il seguente codice (linguaggio C) è equivalente a quello sopra: *(base+(index*sizeof(int)) ) Il primo asterisco serve per accedere all'informazione presente all'indirizzo specificato nelle parentesi. In assembly (sintassi Intel/NASM/MASM) [base+index*scale] Comunque la formula che hai postato tu è abbastanza esplicativa!
__________________
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:53.




















