Por lo general, al ejecutar una matriz, podemos encontrar las siguientes líneas de código ensamblador:
mov [base_address_of_array + array_index * size_of_an_item_in_array], edx
En su caso, supongo que la matriz está en la pila (es por eso que encuentra esp
como parte de la dirección base de la matriz. Luego, también tiene un desplazamiento a esp
que es 0Ch
(que es 12 en decimal). Por lo tanto, la matriz se encuentra en esp + 0Ch
. Luego, eax
es el índice y 4
es el tamaño de un elemento en la matriz (probablemente un número entero de 4 bytes).
Si miramos la w Hole CFG, lo traduciría de nuevo a C en algo como esto:
int array[4]; for (int i = 0; i < 4; ++i) array[i] = i;
Nota : Supuse que el arco azul en el CFG está volviendo a loc_401381
.
Comentarios