Dette spørsmålet har allerede et svar her :
Svar
Vanligvis, når vi kjører gjennom en matrise, kan vi finne følgende linjer med monteringskode:
mov [base_address_of_array + array_index * size_of_an_item_in_array], edx
I ditt tilfelle vil jeg gjette at matrisen er på bunken (det er derfor du finner esp
som en del av basisadressen til matrisen. Deretter har du også en forskyvning til esp
som er 0Ch
(som er 12 i desimal). Matrisen ligger altså ved esp + 0Ch
. Deretter er eax
indeksen og 4
er størrelsen på et element i matrisen (sannsynligvis et heltall på 4 byte).
Hvis vi ser på w hull CFG, jeg vil oversette det tilbake til C i noe slikt:
int array[4]; for (int i = 0; i < 4; ++i) array[i] = i;
Merk : Jeg antok at den blå lysbuen i CFG kommer tilbake til loc_401381
.
Kommentarer
- Monteringskoden ser ut som peker-aritmetikk med matriser. Er det ikke '?