Hola, alguien sabe como referencia elcodigo ensamblador a una variable local en memoria principal?, en otras palabras, como se compila este codigo de C
int i;
int i = 0; /* este especificamente */
a ensamblador IA-32 (i386)?
saludos
Creo que te referís a esto:
lea edi,[ebp-4] ; int i;
mov DWORD[edi],0 ; i = 0;
utilizamos Lea para obtener la dirección de i y le asignamos el valor de cero.
si, a eso mismo me refiero. Pero, una duda, el numero X que va en
lea edi, [ebp-X]
tiene que ir incrementando segun mas variables locales se vayan declarado anteriormente?
saludos!
Las variables locales se encuentran restando a EBX, -4 es la primera variable de 4 bytes,-8 la segunda y así sucesivamente.
Algunos lenguajes de programación son mucho mas estrictos con esta regla, por lo que si tienes una variable de 4 bytes y luego un "short" podrias llegar a ver instrucciones como "lea edi,[ebx-6]", pero esos casos son raros.
A eso mismo me refiero!! Muchas gracias por responder