ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Estructura y funcionamiento de la pila(stack) en ensamblador


Enviado por   •  14 de Septiembre de 2022  •  Resúmenes  •  521 Palabras (3 Páginas)  •  84 Visitas

Página 1 de 3

Estructura Pila o Stack

1. Stack frame anterior: marcos de pila pero de métodos anteriormente usados.

2. Argumentos: parámetros que se le entregan a una función.

3. Return address (EIP extended instruccion pointer): Aquí se almacena la dirección de retorno. La dirección de memoria a la que debe apuntar, luego de finalizar esa función. En palabras sencillas, es como un marcador de páginas de un libro, recordara fácilmente donde se debe continuar la lectura.

4. Segmento de dirección de marco de pila anterior: almacena la dirección de memoria que apunta al marco de pila anterior. En sí, almacena la dirección al marco de la función anterior.

5. Espacio de variables locales: Este espacio de memoria está reservado para las variables locales de la función. Considerando que se quiera almacenar la variable "Hola Mundo.", se deberán reservar 12 bytes, puesto las letras, el punto y el espacio suman 11 bytes, sin embargo, es necesario indicar el término de la cadena con "/0" que suma la totalidad de 12 bytes. También se debe considerar con respecto a la memoria reservada para variables locale, que existen un segmento de memoria no reservado y libre, siempre y cuando no se haya consumido toda la memoria.

6. EBP (extended base point o base de la pila): El reistro EBP guarda una dirección de memoria que apunta al segmento de dirección del marco de pila anterior.

7. ESP (extended Stack pointer o cima de la pila): También es un registro, que almacena la dirección de memoria que apunta al último dato insertado.

Comportamiento Registros

Para recordar todo el proceso de ejecución de una aplicación, se abordará desde el princicpio. En el que lo primero será almacenar el código fuente de la

aplicación en lenguaje maquina en el (.txt). Se procede con la carga de variable globales inicializadas en (.data) y no inicializadas en (.bss).

Sin embargo, en este caso no existe ninguna. Además, el programa no utiliza memoria dinámica, por lo que no se reserva memoria en esta área (Heap).

#include<stdio.h>

void suma(int x,int y){

int resultado;

resultado = x + y;

return resultado;

}

int main(){

int i = 1;

int j = 2;

suma(i,j);

return 0;

}

1.

...

Descargar como (para miembros actualizados)  txt (3.2 Kb)   pdf (39.9 Kb)   docx (8.5 Kb)  
Leer 2 páginas más »
Disponible sólo en Clubensayos.com