indice di array in assembly? [duplicate]

Questa domanda ha già una risposta qui :

Risposta

Di solito, quando si esegue un array, possiamo trovare le seguenti righe di codice assembly:

mov [base_address_of_array + array_index * size_of_an_item_in_array], edx 

Nel tuo caso, la mia ipotesi sarebbe che larray sia nello stack (ecco perché trovi esp come parte dellindirizzo di base dellarray. Quindi, hai anche un offset per esp che è 0Ch (che è 12 in decimale). Pertanto, larray si trova in esp + 0Ch. Quindi, eax è lindice e 4 è la dimensione di un elemento nellarray (probabilmente un numero intero di 4 byte).

Se guardiamo la w buco CFG, lo traduco di nuovo in C in qualcosa del genere:

int array[4]; for (int i = 0; i < 4; ++i) array[i] = i; 

Nota : suppongo che larco blu nel CFG stia tornando a loc_401381.

Commenti

  • Il codice assembly assomiglia allaritmetica dei puntatori con array. Non è ' vero?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *