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 | ;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)