Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Mensaje iniciado por: MRx86 en 17 Marzo 2017, 13:54 PM

Título: como referencia el codigo ensamblador a una variable (local) en memoria?
Publicado por: MRx86 en 17 Marzo 2017, 13:54 PM
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
Título: Re: como referencia el codigo ensamblador a una variable (local) en memoria?
Publicado por: Yuki en 17 Marzo 2017, 18:06 PM
Creo que te referís a esto:

Código (asm) [Seleccionar]
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.
Título: Re: como referencia el codigo ensamblador a una variable (local) en memoria?
Publicado por: MRx86 en 17 Marzo 2017, 20:00 PM
si, a eso mismo me refiero. Pero, una  duda, el numero X que va en

Código (mpasm) [Seleccionar]


lea edi, [ebp-X]



tiene que ir incrementando segun mas variables locales se vayan declarado anteriormente?

saludos!
Título: Re: como referencia el codigo ensamblador a una variable (local) en memoria?
Publicado por: Yuki en 18 Marzo 2017, 11:19 AM
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.
Título: Re: como referencia el codigo ensamblador a una variable (local) en memoria?
Publicado por: MRx86 en 22 Mayo 2017, 23:50 PM
A eso mismo me refiero!! Muchas gracias por responder