La “pila” es un área de memoria direccionada en serie que la CPU administra de forma parcial y automática para usted. Por “direccionado en serie” aquí, quiero decir que todo lo almacenado en la pila se almacena secuencialmente, sin espacios.
Puede almacenar datos manualmente en la pila (como una pila de platos) para fines temporales. Si lo hace, debe tener mucho cuidado de eliminarlo siempre en el orden inverso de almacenamiento y debe hacer todo lo posible para mantener la pila lo más vacía posible. En cualquier momento, puede agregar una “placa” (byte o palabra) a la “parte superior” de la pila con una simple instrucción PUSH (ensamblador), y en cualquier momento puede quitar la “placa” superior de la pila, pero no puedes quitar ninguna “placa” debajo de ella; solo puedes eliminar la parte superior. Tampoco puede insertar ninguna “placa” en el medio de la pila.
Cada vez que llama a un procedimiento o función, la CPU almacena automáticamente algunos de sus registros, uno a la vez, en la pila, luego “PUSHes” (almacena) su dirección de instrucción actual (más uno) en la pila, luego salta al procedimiento llamado A su regreso, la CPU “POP” es la “placa” superior (que es su próxima dirección de instrucción previa a la llamada) de la pila. Dependiendo del tipo específico de retorno, también puede POP otros registros y realizar una limpieza de pila. Mientras está dentro de ese procedimiento / función, puede crear variables temporales adicionales dentro del espacio de la pila: esas variables tendrán un alcance restringido a ese procedimiento / función y, opcionalmente, a otros procedimientos / funciones que este procedimiento / función llama, pero no extendiéndose a este procedimiento / función de la persona que llama. El espacio de pila más allá del SP actual (puntero de pila) nunca garantiza que contenga nada en particular.
- ¿Qué requiere GSoC: habilidades de desarrollo web o programación competitiva?
- ¿Puedo alojar el código de mi sitio web en Github cuando está usando WordPress de modo que cada vez que presiono un cambio, el sitio se actualiza automáticamente?
- ¿A quién puedo contactar para obtener los mejores servicios de desarrollo de Laravel?
- ¿Cuál es el mejor sitio para crear rtl.css para un sitio web temático receptivo?
- ¿Por qué alguien debería aprender a crear un sitio web en 2017 y en el futuro?
Si trabaja en cualquier idioma de un nivel superior al lenguaje ensamblador, el compilador o el intérprete generalmente manejará todo el uso de la pila por usted … pero si trabaja en un lenguaje de “nivel inferior más alto” como C, a menudo es útil entender la pila .
Si trabaja con un IDE, ese IDE puede exponerle la pila y los registros de la CPU durante una sesión de depuración. Si es así, experimente con él: realice llamadas, cree variables locales, examine sus posiciones en la pila, observe lo que les sucede cuando regresa de una llamada.