¿Qué hay dentro de la pila?

Si ejecuto un programa, al igual que

#include <stdio.h>
int main(int argc, char *argv[], char *env[]) {
  printf("My references are at %p, %p, %p\n", &argc, &argv, &env);
}

Podemos ver que esas regiones están realmente en la pila. Pero ¿qué más hay? Si ejecutamos un bucle a través de todos los valores en Linux 3.5.3 (por ejemplo, hasta segfault) podemos ver algunos números extraños, y una especie de dos regiones, separadas por un grupo de ceros, tal vez para intentar evitar sobrescribir las variables de entorno accidentalmente.

De todos modos, en la primera región debe haber muchos números, como todos los marcos para cada llamada de función.

¿Cómo podríamos distinguir el final de cada cuadro, dónde están los parámetros, dónde el canario, si el compilador agregó uno, la dirección de retorno, el estado de la CPU, etc.?

Respuestas a la pregunta(4)

Su respuesta a la pregunta