indeks over matrix i samling? [duplikat]

Dette spørgsmål har allerede et svar her :

Svar

Når vi kører gennem en matrix, kan vi normalt finde følgende linier med samlingskode:

mov [base_address_of_array + array_index * size_of_an_item_in_array], edx 

I dit tilfælde vil mit gæt være, at arrayet er på stakken (det er derfor, du finder esp som en del af array-basisadressen. Derefter har du også en forskydning til esp som er 0Ch (som er 12 i decimal). Altså er arrayet placeret på esp + 0Ch. Derefter er eax indekset og 4 er størrelsen på et element i arrayet (sandsynligvis et heltal på 4 bytes).

Hvis vi ser på w hul CFG, jeg vil oversætte det tilbage til C i noget som dette:

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

Bemærk : Jeg formodede, at den blå lysbue i CFG vender tilbage til loc_401381.

Kommentarer

  • Samlingskoden ligner markørregning med arrays. Er det ikke '?

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *