PDF de programación - La pila y funciones

Imágen de pdf La pila y funciones

La pila y funcionesgráfica de visualizaciones

Publicado el 9 de Julio del 2019
301 visualizaciones desde el 9 de Julio del 2019
981,2 KB
17 paginas
Creado hace 3a (02/11/2016)
La pila y funciones





© Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la

Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción,

puesta a disposición del público y en general cualquier otra forma de explotación de toda o parte

de la misma.



La utilización no autorizada de esta obra, así como los perjuicios ocasionados en los derechos de

propiedad intelectual e industrial de la Universidad Europea de Madrid, S.L.U., darán lugar al
ejercicio de las acciones que legalmente le correspondan y, en su caso, a las responsabilidades

que de dicho ejercicio se deriven.




La pila y funciones



Contenido



Presentación ........................................................................................................................ 4

Funciones (o rutinas) ........................................................................................................... 5

Declaración de una función ................................................................................................. 6

Llamada a una función......................................................................................................... 7

La pila (STACK) ..................................................................................................................... 9

Instrucciones para manejar la pila .................................................................................... 11

Invocación: Instrucciones CALL Y RCALL ............................................................................ 13

Retorno de funciones: instrucción RET (RETorno de la rutina) ......................................... 14

Uso de registros en funciones ........................................................................................... 15

Resumen ............................................................................................................................ 17



© Universidad Europea de Madrid. Todos los derechos reservados.

3






La pila y funciones

Presentación



La programación estructurada, base de cualquier otra metodología de programación, también está

soportada en ensamblador, aunque de una manera muy simple pero robusta.

La programación estructurada está fundamentada en las funciones, trozos de código independiente,

autónomo y reutilizable. Es decir, trazos de código que resuelven un problema y que son independientes

del resto de código del programa, lo que lo hace muy portable y reutilizable. La única comunicación que

mantiene con el resto del programa es a través de parámetros, por los que se le pasa la información de

entrada y por la que sale la información calculada.

Las funciones, además, fundamentan su funcionamiento en la pila. Un concepto de almacenamiento de

información, cuyo principio de funcionamiento es “último en entrar, primero en salir (LIFO)”. Es decir,

podemos entender una pila, como un almacenamiento donde

los elementos están apilados

verticalmente, de manera que solo la cima de la pila es accesible, siendo solo el elemento último en

poner en la pila, el único que puede ser sacado. Los demás elementos (aunque visibles) no pueden ser

sacados de la pila, mientras encima de ellos haya otros elementos.

Objetivos

Los objetivos que se pretenden alcanzar con este recurso son los siguientes:

 Analizar el funcionamiento de la pila software que incluyen todos los procesos.

 Reproducir el manejo de la pila software en ensamblador.



© Universidad Europea de Madrid. Todos los derechos reservados.

4



La pila y funciones



Funciones (o rutinas)

Cuanto mayor es una organización empresarial, más crecen las responsabilidades y el volumen de ésas.

Por tanto, la evolución natural de las organizaciones les lleva a ir repartiendo las responsabilidades sobre

las actividades que se van desarrollando.



Las rutinas y funciones (que se diferencian porque las primeras no tienen parámetros y las segundas

sí) son conceptos básicos en todos los lenguajes de programación y base de la programación

estructurada.



Permiten la reutilización de código, la separación/división de problemas y la reutilización de una manera

muy simple. Las funciones se pueden agrupar, formado bibliotecas, de modo que puedan volver a ser

utilizadas en el futuro, sin necesidad de reescribir el código que las implementa de forma directa en

nuestro propio proyecto.

Además, las funciones (o rutinas) son la base de la división de trabajo en equipos de desarrollo de varios

programadores. Permitiendo una división del trabajo y una fácil unificación posterior. Dando lugar, al

primer elemento básico necesario para un primer nivel de abstracción en el diseño de software (Software

Engineering)

Sea cual sea el lenguaje de programación que se use, o el nivel de abstracción que permita, por ejemplo,

en programación orientado a objetos, al final, todo el código es traducido a estas pequeñas instrucciones

de código máquina y a sus simples, pero efectivas funciones. No importan el tamaño del objeto, la forma

de los parámetros de una función u otras abstracciones, que al final, serán la pila y las llamadas a las

funciones las encargadas de dar soporte a todo este código de alto nivel.



5


© Universidad Europea de Madrid. Todos los derechos reservados.


La pila y funciones



Declaración de una función

Una función, es sólo un grupo de instrucciones que realizan una tarea determinada y fija, y luego de

terminar su labor, la ejecución del programa vuelve al punto de llamada.



Por tanto, el uso típico que se le da a una función, es el de solucionar un problema aislado, o el de

encapsular un trozo de código que se va a repetir muchas veces a lo largo de nuestro programa.

Ejemplo de repetición

Crear una rutina (no tiene parámetros de entrada ni salida) que permita:

 Borrar todos los bits del puerto B.



Inicializar el temporizador 0.

 Activar la interrupción de tiempo.

Si esta fuese una tarea que se realiza varias veces en el programa, es buena idea encapsularlo en una

rutina, de manera que cada vez que se quiera hacer esta actividad, solo haya que invocar (llamar) la

función, no teniendo que reescribir el código de nuevo.

La declaración de funciones en ensamblador, no existe, es simplemente una dirección de memoria de

programa, que coincide con a la primera instrucción que componen el grupo de instrucciones. Para

simplificar este cálculo de la primera instrucción, generalmente se identifica con una etiqueta para que el

cálculo y la memorización de la funciona sea más simple. Esta etiqueta representa el nombre de la rutina.



© Universidad Europea de Madrid. Todos los derechos reservados.

6



La pila y funciones



Llamada a una función

La llamada a una función, desde el punto de vista del microprocesador, es solo un salto (incondicional) a

un punto del código. Por tanto, se podría implementar con instrucciones tipo JMP.

Pero entonces, ¿cómo se podría gestionar el regreso al punto de llamada? Hay que tener en cuenta que

una misma función puede ser llamada desde varios puntos de código, por lo que saber desde el punto que

ha sido llamada, para luego continuar desde ahí, se convierte en un problema.

Una posible solución, es almacenar el punto de llamada de alguna manera (se recuerda que el punto

desde el que se llama una función es el valor del registro PC antes del salto), por ejemplo en un registro,

luego, consultando ese punto valor almacenado, se puede saber cuál es el punto de retorno. El problema,

es que una función puede ser invocada desde otra función, con lo que ya hay que recordar dos puntos de

retorno (¿dos registros?).



La solución a esto es la pila de datos. De manera que ya no solo se puede almacenar todos los que se

necesiten (mientras se tenga memoria libre), sino que además se tienen organizados los puntos de

retorno del más actual al más antiguo. De manera que se puede deshacer el camino de llamadas a

funciones deshaciendo los elementos guardados en la pila.

La solución, pasa, porque cada vez que se llama a una rutina, la dirección de memoria del punto de

programa en ejecución (dirección de retorno) debe ser almacenado. Recordemos que ese punto de

retorno, es el valor del contador de programa justo antes de hacer el salto a la función.

La instrucción en ensamblador que hace estas dos tareas es la función call:

 Almacenar el valor actual del contador de programa.



Saltar al inicio de la función.



© Universidad Europea de Madrid. Todos los derechos reservados.

7



La pila y funciones



Como el almacenamiento del punto de retorno, ya se realiza en memoria, da la posibilidad de manejar

una

lista

ilimitada de

llamadas de rutina,

incluyendo también

la recursividad (llamando a un

procedimiento desde si mismo).



Memoria

Este espacio de memoria, funcionará como una pila (stack en inglés), donde los nuevos datos se

amontonan en la cima (push) sobre los datos anteriores, manteniendo el orden de llegada. Al recuperar

datos (pop), el primer valor obtenido es el de la parte superior de la pila (cima), que coincide con el

último valor en ser almacenado.



© Universidad Europea de Madrid. Todos los derechos reservados.

8
  • Links de descarga
http://lwp-l.com/pdf16252

Comentarios de: La pila y funciones (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad