Tato otázka již má odpověď zde :
Odpověď
Obvykle při procházení polem můžeme najít následující řádky kódu sestavy:
mov [base_address_of_array + array_index * size_of_an_item_in_array], edx
Ve vašem případě by můj odhad byl, že pole je v zásobníku (proto najdete esp
jako součást základní adresy pole. Potom máte také posun k esp
, což je 0Ch
(což je 12 v desítkové soustavě). Takže pole je umístěno na esp + 0Ch
. Potom eax
je index a 4
je velikost položky v poli (pravděpodobně celé číslo 4 bajty).
Podíváme-li se na w díra CFG, přeložil bych to zpět do C nějakým způsobem takto:
int array[4]; for (int i = 0; i < 4; ++i) array[i] = i;
Poznámka : Předpokládal jsem, že modrý oblouk v CFG se vrací zpět k loc_401381
.
Komentáře
- Kód sestavy vypadá jako aritmetika ukazatele s poli. Není to '?