Compilar Assembler x86

Compilar Assembler x86

de Alexandra Jenis Castelli Norando -
Número de respuestas: 4
Hola, como puedo diferenciar que usar para el manejo de un stack? , es decir, en el teórico muestran muchas maneras de compilar una misma función y en algunos exámenes eh visto que lo hacen utilizando el registro BP y el puntero SP y trabajan siempre sobre el stack, mientras que en otros sacan los parámetros o elementos del stack y trabajan fuera de esté. 
Me sucede que cuando hago exámenes no me doy cuenta por cual optar.
Hay alguna manera de saberlo? Es lo mismo usar cualquiera de las dos formas?

Les dejo un ejemplo por si no se entendió bien la duda: 

llamada: 
push n
call funcion
pop ax

Trabajo "fuera" del stack:

funcion proc 
pop bx  ; saco IP
pop ax ;  saco el n
push bx ; vuelvo a colocar la IP
        ...

Trabajo "dentro" del stack:

funcion proc 
pop BP   
mov BP, SP  
push ax
mov ax, BP+4 ; ax=n 
        ...

Gracias!! 
Saludos
En respuesta a Alexandra Jenis Castelli Norando

Re: Compilar Assembler x86

de Gonzalo Tejera -
Hola. Es lo mismo usar cualquiera de las dos formas. Cuando la letra indica que deben preservarse los registros, es más clara y menos complicada la solución usando BP. Algunas consideraciones generales:
- Las soluciones con BP consumen más stack.
- Las soluciones con stack simplifican las consideraciones al momento de calcular el consumo.

Saludos, Gonzalo
En respuesta a Alexandra Jenis Castelli Norando

Re: Compilar Assembler x86

de Diego Martin Ernst Gonzalez -

Buenas, es necesario hacer el "MOV BP,SP" para luego acceder al stack con BP?? no se puede usar SP directo? Porque mismo en la solución del examen usan BP para acceder al stack y no me queda claro por qué no se hace da la otra manera.

Saludos