Manejo del stack (Organización del Computador II)

De Cuba-Wiki

Aca les presento un esquema para la creación de un stack frame, préstenle especial atención a la ubicación en la pila de los parámetros de entrada y de las variables locales tras la creación del mismo:

%define local1 [ebp-4]
%define local2 [ebp-8]

%define param1 [ebp+8]
%define param2 [ebp+12]

global _funcion 

section .data

;datos

section .text 

_funcion: 
  
push ebp 
mov ebp,esp 
sub esp,8 

push ebx 
push edi 
push esi 

;la pila en este momento:
; 
;| esi  | <- esp 
;| edi  | 
;| ebx  | 
;| loc2 | 
;| loc1 | 
;| ebp  | <- ebp 
;| ret  | 
;|param1| 
;|param2| 

;codigo 

pop esi 
pop edi 
pop ebx 

add esp,8 
pop ebp 

ret 

(en la pila donde dice ret se refiere a la direccion de retorno)