index van array in montage? [duplicate]

Deze vraag heeft hier al een antwoord :

Antwoord

Meestal kunnen we bij het doorlopen van een array vinden de volgende regels montagecode:

mov [base_address_of_array + array_index * size_of_an_item_in_array], edx 

In jouw geval zou ik vermoeden dat de array op de stapel staat (daarom vind je esp als onderdeel van het basisadres van de array. Dan heb je ook een offset naar esp die 0Ch (dat is 12 in decimalen). De array bevindt zich dus op esp + 0Ch. Vervolgens is eax de index en 4 is de grootte van een item in de array (waarschijnlijk een geheel getal van 4 bytes).

Als we kijken naar de w hole CFG, zou ik het terug vertalen naar C in iets als dit:

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

Opmerking : ik nam aan dat de blauwe boog in de CFG terugkeert naar loc_401381.

Reacties

  • De assembly-code ziet eruit als pointer-rekenkunde met arrays. Is het niet ' het?

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *