Estructura de la memoria; heap, stack
Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura.
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.
En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, Top of Stack en inglés). La operación retirar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.
Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato sobre una pila de platos, y una operación retirar a retirarlo.
En cuanto al heap (la sección de memoria utilizada para la parte dinámica de la memoria), y empieza en la posición 0x10040000 de la memoria.
El heap o montón es más difícil de implementar. Típicamente se necesita un código que maneje el heap, de manera que las interacciones de inserción y extracción de datos deben tener algún tipo de estructura de datos que permitan seguir en qué posición de memoria se encuentra en el momento.
Bibliografía
- http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Mips/stack.html
- http://courses.cs.vt.edu/~cs2505/fall2010/Notes/pdf/T25.MIPSStack.pdf
- https://es.wikipedia.org/wiki/Pila_(inform%C3%A1tica)
Véase también
- Instrucciones de salto condicional en el MIPS
- Instrucciones de transferencia de datos en el MIPS
- Instrucciones aritméticas, lógicas y de salto incondicional en el MIPS