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?