taulukon taulukko kokoonpanossa? [kaksoiskappale]

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ä?

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *