Erre a kérdésre már itt van válasz :
válasz
Általában egy tömb futásakor megtalálhatjuk a következő sorokat az összeállítási kódból:
mov [base_address_of_array + array_index * size_of_an_item_in_array], edx
Esetemben azt gondolnám, hogy a tömb a veremben van (ezért találja meg a esp
a tömb alapcímének részeként. Ezután lesz egy esp
eltolás, amely 0Ch
(ami tizedesjegyű 12). Tehát a tömb a esp + 0Ch
helyen található. Ezután a eax
az index és 4
a tömbben lévő elem mérete (valószínűleg 4 bájt egész szám).
Ha megnézzük a w lyuk CFG, ilyenné fordítanám vissza C-be:
int array[4]; for (int i = 0; i < 4; ++i) array[i] = i;
Megjegyzés : Azt hittem, hogy a CFG kék íve visszatér loc_401381
-re.
Megjegyzések
- Az összeállítási kód mutatós aritmetikának tűnik tömbökkel. Nincs ' ez?