index pole v sestavě? [duplicate]

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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *