Clase 12 - Subrutinas - Pontificia Universidad Cat´olica...

Info icon This preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Pontificia Universidad Cat´olica de Chile Escuela de Ingenier´ ıa Departamento de Ciencia de la Computaci´on IIC2343 Arquitectura de Computadores Segundo Semestre 2010 Clase 12: Subrutinas c circlecopyrt Alejandro Echeverr´ ıa 1. Motivaci´on Con el computador b´asico visto hasta el momento es posible realizar una gran variedad de pro- gramas, que realicen diversos c´ alculos. Sin embargo, por ahora para poder reutilizar esos programas es necesario reescribir el c´ odigo cada vez que se requiera. Para solucionar esto es necesario incorpo- rar la capacidad de reutilizaci´ on de c´ odigo al computador permitiendo escribir un trozo funcional una vez y despu´ es poder volver a ocuparlo varias veces. 2. Subrutinas Supongamos que se desea escribir un c´ odigo en assembly para calcular el producto punto entre un vector ( a, b ) y un vector ( c, d ). Por definici´on, el producto punto se calcula como: ( a, b ) · ( c, d ) = ac + bd . Para realizar la funci´ on entonces necesitamos realizar dos multiplicaciones, un pesudoc´ odigo en lenguaje de alto nivel para esta operaci´on se muestra a continuaci´ on: byte [] vector1 = new byte []{2 ,3}; byte [] vector2 = new byte []{4 ,5}; byte prodPunto = 0; prodPunto += mult(vector1 [0], vector2 [0]); prodPunto += mult(vector1 [1], vector2 [1]); Como se vio anteriormente, con el computador b´asico y las instrucciones vistas ya es posible desarrollar un programa que multiplique dos n´umeros como el siguiente: DATA: var1 3 var2 4 res i CODE: start: MOV A,(res) ADD A,(var2) MOV (res),A MOV A,(i) ADD A,1 MOV (i),A MOV B,(var1) CMP A,B JLT start 1 Una opci´ on para utilizar este c´ odigo en el c´ alculo del producto punto ser´ ıa reescribirlo dos veces, para las dos multiplicaciones. El problema de esto es que por un lado, debemos adaptar el c´ odigo a cada multiplicaci´ on, y adem´ as escribirlo dos veces, es decir, desperdiciar espacio en al memoria de instrucciones. Una mejor alternativa ser´ ıa poder reutilizar el mismo c´ odigo de la multiplicaci´ on para las dos multiplicaciones del producto punto sin tener que reescribirlo, es decir poder llamar al trozo de c´ odigo de la multiplicaci´ on durante la ejecuci´ on del programa del producto punto, lo que se conoce como una subrutina . Existen tres elementos necesarios para poder implementar una subrutina: poder entregarle par´ ametros , poder recibir un valor de retorno y poder hacer la llamada a la subrutina , es decir poder saltar a la subrutina y volver luego de que termine a una direcci´ on de retorno que apunte a la siguiente instrucci´on del programa. DATA: vector1 2 3 vector2 4 5 prodPunto CODE: ADD prodPunto , MULT(vector1 [0], vector2 [0]) ADD prodPunto , MULT(vector1 [0], vector2 [0]) 2.1. Par´ ametros Para poder entregarle par´ ametros a la subrutina, es necesario almacenarlos en alg´un lugar al cual est´ a pueda acceder. En el computador b´asico existen dos lugares donde se pueden almacenar datos: registros y variables en memoria...
View Full Document

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern