Diferencia entre revisiones de «Manejo del stack (Organización del Computador II)»

De Cuba-Wiki
Sin resumen de edición
Sin resumen de edición
Línea 5: Línea 5:
   
   
  %define param1 [ebp+8]
  %define param1 [ebp+8]
  %define param2 [ebp+12
  %define param2 [ebp+12]
   
   
  global _funcion  
  global _funcion  
Línea 25: Línea 25:
  push esi  
  push esi  
   
   
  ;la pila te quedo asi:  
  ;la pila en este momento:
  ;  
  ;  
  ;| esi  | <- esp  
  ;| esi  | <- esp  

Revisión del 12:50 5 dic 2006

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)