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

Info iconThis 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 DocumentRight 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

This note was uploaded on 03/09/2011 for the course INGENIERIA 111 taught by Professor Jorgevera during the Spring '10 term at Pontificia Universidad Católica de Chile.

Page1 / 10

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

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online