index för array i montering? [duplicera]

<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Den här frågan har redan ett svar här :

Svar

När vi kör igenom en matris kan vi vanligtvis hitta följande rader med monteringskod:

mov [base_address_of_array + array_index * size_of_an_item_in_array], edx 

I ditt fall skulle jag gissa att arrayen finns i stacken (det är därför du hittar esp som en del av matrisens basadress. Sedan har du också en förskjutning till esp vilket är 0Ch (som är 12 i decimal). Arrayen är alltså esp + 0Ch. Då är eax indexet och 4 är storleken på ett objekt i matrisen (förmodligen ett heltal på 4 byte).

Om vi tittar på w hål CFG, jag skulle översätta det tillbaka till C i något så här:

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

Obs : Jag antar att den blå bågen i CFG återgår till loc_401381.

Kommentarer

  • Monteringskoden ser ut som pekare med matriser. Är det inte '?

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *