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 1: Línea 1:
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 local1 [ebp-4]
  %define local2 [ebp-8]
  %define local2 [ebp-8]
   
   
  %define param1 [ebp+8]
  %define param1 [ebp+8]
  %define param2 [ebp+12]
  %define param2 [ebp+12
   
   
  global _funcion  
  global _funcion  
   
   
  section .data  
  section .data
;datos
   
   
  section .text  
  section .text  
Línea 44: Línea 48:
  ret  
  ret  
   
   
(en la pila donde dice ret se refiere a la direccion de retorno)
(en la pila donde dice ret se refiere a la direccion de retorno)

Revisión del 02:31 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 te quedo asi: 
; 
;| 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)