Tähän kysymykseen on jo täällä vastaus :
vastaus
Tavallisesti, kun suoritamme matriisia, löydämme seuraavat kokoonpanokoodirivit:
mov [base_address_of_array + array_index * size_of_an_item_in_array], edx
Sinun tapauksessasi arvaukseni mukaan taulukko on pinossa (siksi löydät esp
osana taulukon perusosoitetta. Sitten sinulla on myös siirtymä arvoon esp
, joka on 0Ch
(mikä on 12 desimaalin tarkkuudella). Taulukko sijaitsee paikassa esp + 0Ch
. Sitten eax
on hakemisto ja 4
on matriisin alkion koko (todennäköisesti 4 tavun kokonaisluku).
Jos katsomme w reikä CFG, käännän sen takaisin C: ksi tällä tavoin:
int array[4]; for (int i = 0; i < 4; ++i) array[i] = i;
Huomautus : Oletin, että CFG: n sininen kaari on palaamassa loc_401381
.
Kommentit
- Kokoonpanokoodi näyttää osoitinten aritmeettiselta matriisien kanssa. Eikö ' ole sitä?