Solo por curiosidad, que es eso de pop y donde puedo leer para encontrar el registro que indica la posición de la pila... por que ya con lo que me dijiste voy a cambiar el código jajajajaja
La gestión de una pila, es algo muy básico en informática, los términos PUSH y POP, se utilizan para referirse a introducir o sacar una dirección en la pila.
Cuando el programa SALTA a una subrutina o una función, cambia el PC (contador de programa), pero antes almacena en la pila la dirección desde la que ha saltado, haciendo un PUSH, cuando acaba la subrutina o función, saca de la pila, con un POP, la dirección desde la que saltó y la vuelve a colocar en el PC, para que el programa siga su curso.
Lo de tocar la pila a mano, es peligroso, eso lo gestiona la CPU automáticamente, y lo de hacer una función que se autollama es una aberración. Cuando alguien tiene que recurrir a esas argucias, debería de replantearse mejor la forma de programar.