Universidad Nacional de Quilmes - orga.blog.unq.edu.ar
Transcript of Universidad Nacional de Quilmes - orga.blog.unq.edu.ar
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacion y reuso de codigo
Organizacion de computadoras
Universidad Nacional de Quilmes
May 12, 2020
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Repaso
Q1
Q2
1 Memoria1 celdas2 palabras3 MAR MBR4 relacion con circuitos conocidos
(decodificador)
2 Buses1 de Direcciones2 de Datos3 de Control
3 Q21 Modo de direccionamiento directo
4 Ciclo de ejecucion revisado:1 Cantidad de accesos
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ciclo de ejecucion revisado
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ciclo de ejecucion revisado
Buscar la instrucción
Decodificar la instrucción
Ejecutar la instrucción
Buscar operando
El operandoestá en
memoria?
SINO
Almacenar resultado
¿El resultadoestá en
memoria?SI
NO
¿En que parte de lamemoria se busca la
instruccion?
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ciclo de ejecucion revisado
¿Como sabe la UC cual es la celda que debe leercada vez?
Utiliza un registro especial: Program Counter (PC)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ciclo de ejecucion revisado
¿Como sabe la UC cual es la celda que debe leercada vez?
Utiliza un registro especial: Program Counter (PC)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ciclo de ejecucion revisado
¿Donde se almacena la instruccion leıda?
En otro registro especial: Instruction Register (IR)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ciclo de ejecucion revisado
¿Donde se almacena la instruccion leıda?
En otro registro especial: Instruction Register (IR)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ciclo de ejecucion revisado
Buscar la instrucción
Decodificar la instrucción
Ejecutar la instrucción
Buscar operando
El operandoestá en
memoria?
SINO
Almacenar resultado
¿El resultadoestá en
memoria?SI
NO
1 Se hace una lectura de lacelda de memoria que indicaPC.
2 El contenido de la celdaleida se carga en IR
3 Se incrementa PC en 1
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ciclo de ejecucion revisado
0 01011 10102 00003 11114 1100
La instruccion actual es 0101
El valor de PC es 1
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Registros reservados
Entonces...
PC (Program Counter) indica la direccion de lasiguiente instruccion a ejecutar
IR (Instruction Register) Almacena el codigo maquinade la instruccion actual
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Program Counter: Ejemplo
0000 12000001 000F0002 11110003 29C80004 A0A00005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 0000
1 PC=0
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Program Counter: Ejemplo
0000 12000001 000F0002 11110003 29C80004 A0A00005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 0000
1 PC=02 Busqueda de instruccion:
1 Lectura de la celda 00002 IR=12003 PC=0001
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Program Counter: Ejemplo
0000 12000001 000F0002 11110003 29C80004 A0A00005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 0000
1 PC=0
2 Busqueda de instruccion (celda 0000)
3 Decodificacion de la instruccion: MOV [??], 0x??
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Program Counter: Ejemplo
0000 12000001 000F0002 11110003 29C80004 A0A00005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 0000
1 PC=0
2 Busqueda de instruccion (celda 0000)
3 Decodificacion de la instruccion: MOV [??], 0x??
4 Busqueda de instruccion:1 Lectura de la celda 00012 IR=1200000F3 PC=0002
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Program Counter: Ejemplo
0000 12000001 000F0002 11110003 29C80004 A0A00005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 0000
1 PC=0
2 Busqueda de instruccion (celda 0000)
3 Decodificacion de la instruccion: MOV [??], 0x??
4 Busqueda de instruccion (celda 0001)5 Busqueda de instruccion:
1 Lectura de la celda 00022 IR=1200000F11113 PC=0003
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Program Counter: Ejemplo
0000 12000001 000F0002 11110003 29C80004 A0A00005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 0000
1 PC=0
2 Busqueda de instruccion (celda 0000)
3 Decodificacion de la instruccion: MOV [??], 0x??
4 Busqueda de instruccion (celda 0001)
5 Busqueda de instruccion (celda 0002)
6 Decodificacion de la instruccion: MOV [000F], 0x1111
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Program Counter: Ejemplo
0000 12000001 000F0002 11110003 29C80004 A0A00005 00000006 00000007 00000008 00000009 0000000A 0000000B 0000000C 0000000D 0000000E 0000000F 1111
1 PC=0
2 Busqueda de instruccion (celda 0000)
3 Decodificacion de la instruccion: MOV [??], 0x??
4 Busqueda de instruccion (celda 0001)
5 Busqueda de instruccion (celda 0002)
6 Decodificacion de la instruccion: MOV [000F], 0x1111
7 Ejecucion de la instruccion
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
La decodificacion de la instruccion NO es eldesensamblado
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Desafıos
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Desafıo de programacion numero 1
Hacer un programa que calcule n5
para los numeros en las celdasA001 a A003 y lo guarde en la
misma celda
A001 0003A002 0001A003 0008
A001 00F3A002 0001A003 8000
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Desafıo de programacion numero 1
Hacer un programa que calcule n5
para los numeros en las celdasA001 a A003 y lo guarde en la
misma celda
A001 0003A002 0001A003 0008
A001 00F3A002 0001A003 8000
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Desafıo de programacion numero 1
Bosquejando el programa: ¿Que hay que hacer?
Copiar el contenido de A001 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A001
Copiar el contenido de A002 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A002
Copiar el contenido de A003 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A003
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Desafıo de programacion numero 1
Bosquejando el programa: ¿Que hay que hacer?
Copiar el contenido de A001 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A001
Copiar el contenido de A002 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A002
Copiar el contenido de A003 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A003
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Desafıo de programacion numero 1
Bosquejando el programa: ¿Que hay que hacer?
Copiar el contenido de A001 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A001
Copiar el contenido de A002 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A002
Copiar el contenido de A003 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A003
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Desafıo de programacion numero 1
Bosquejando el programa: ¿Que hay que hacer?
Copiar el contenido de A001 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A001
Copiar el contenido de A002 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A002
Copiar el contenido de A003 a un registro
Multiplicarlo 4 veces por si mismo
Copiar el resultado a A003
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Desafıo de programacion numero 2
Hacer un programa que dados losnumeros (n) en las celdas 0001 a
0005 calcule
f (n) = (15 ∗ n + 4)/12− n/2
y lo guarde en las celdas 0006 a000A
0001 n10002 n20003 n30004 n40005 n50006 f (n1)0007 f (n2)0008 f (n3)0009 f (n4)000A f (n5)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Rutinas
RutinaPrograma que resuelve un problema acotadoPuede ser usado en muchas ocasionesPermite modularizar y reusar codigoTambien se la llama subrutina (Es sub porque se la piensa paraser utilizada dentro de otro programa)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Rutinas
RutinaPrograma que resuelve un problema acotadoPuede ser usado en muchas ocasionesPermite modularizar y reusar codigoTambien se la llama subrutina (Es sub porque se la piensa paraser utilizada dentro de otro programa)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Rutinas
RutinaPrograma que resuelve un problema acotadoPuede ser usado en muchas ocasionesPermite modularizar y reusar codigoTambien se la llama subrutina (Es sub porque se la piensa paraser utilizada dentro de otro programa)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Rutinas
RutinaPrograma que resuelve un problema acotadoPuede ser usado en muchas ocasionesPermite modularizar y reusar codigoTambien se la llama subrutina (Es sub porque se la piensa paraser utilizada dentro de otro programa)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Modularizacion
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Modularizacion
ModularizarDividir un problema grande en problemas mas pequenos
ProblemonProblemita 1
Problemita 2
Problemon
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Modularizacion
ModularizarDividir un problema grande en problemas mas pequenos
ProblemonProblemita 1
Problemita 2
Problemon
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Modularizacion
Desafıo de programacion numero 1
Programa principal
Calcular potencia de A001
Calcular potencia de A002
Calcular potencia de A003
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Modularizacion
Desafıo de programacion numero 1
Programa principal
Calcular potencia de A001
Calcular potencia de A002
Calcular potencia de A003
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Modularizacion
Calcular potencia de A001
MOV R0, [A001] ; copiar valor originalMUL R0, [A001]MUL R0, [A001]MUL R0, [A001]MUL R0, [A001]MOV [A001],R0 ; mover resultado
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Modularizacion
Calcular potencia de A002
MOV R0, [A002] ; copiar valor originalMUL R0, [A002]MUL R0, [A002]MUL R0, [A002]MUL R0, [A002]MOV [A002],R0 ; mover resultado
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Modularizacion
Calcular potencia de A003
MOV R0, [A003] ; copiar valor originalMUL R0, [A003]MUL R0, [A003]MUL R0, [A003]MUL R0, [A003]MOV [A003],R0 ; mover resultado
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
¿Como se integran las partes?
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Integrar las partes
(1) Encapsular las subrutinas
delimitar el comienzo y el fin de la rutina
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Integrar las partes
(1) Encapsular las subrutinas
delimitar el comienzo y el fin de la rutina
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Integrar las partes
(1)Encapsular las subrutinas
potA001: MOV R0, [A001] ; etiqueta de comienzoMUL R0, [A001]MUL R0, [A001]MUL R0, [A001]MUL R0, [A001]MOV [A001],R0 ;RET ; fin de la rutina
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Integrar las partes
(1)Encapsular las subrutinas
potA002: MOV R0, [A002] ; etiqueta de comienzoMUL R0, [A002]MUL R0, [A002]MUL R0, [A002]MUL R0, [A002]MOV [A002],R0 ;RET ; fin de la rutina
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Integrar las partes
(1)Encapsular las subrutinas
potA003: MOV R0, [A003] ; etiqueta de comienzoMUL R0, [A003]MUL R0, [A003]MUL R0, [A003]MUL R0, [A003]MOV [A003],R0 ;RET ; fin de la rutina
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Integrar las partes
(2) Usar (llamar) las subrutinas
CALL potA001CALL potA002CALL potA003
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Modularizacion: CALL y RET
Instruccion CALLDesvıa el flujo del programa ala instruccion que define laetiqueta
Instruccion RETPermite restituir el flujo delprograma a la instruccionsiguiente del ultimo llamado
CALL potA001
CALL potA002
CALL potA003
potA001CALL
RET
CALL
RET
potA002
potA003
CALL
RET
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
¿Como puedo ahorrar trabajo?
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Reuso: parametros
¿Que hay en comun?
MOV R0,[A001]MUL R0,[A001]MUL R0,[A001]MUL R0,[A001]MUL R0,[A001]MOV[A001],R0RET
MOV R0,[A002]MUL R0,[A002]MUL R0,[A002]MUL R0,[A002]MUL R0,[A002]MOV[A002],R0RET
MOV R0,[A003]MUL R0,[A003]MUL R0,[A003]MUL R0,[A003]MUL R0,[A003]MOV[A003],R0RET
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Reuso: parametros
¿En que se diferencian?
MOV R0,[A001]MUL R0,[A001]MUL R0,[A001]MUL R0,[A001]MUL R0,[A001]MOV[A001],R0RET
MOV R0,[A002]MUL R0,[A002]MUL R0,[A002]MUL R0,[A002]MUL R0,[A002]MOV[A002],R0RET
MOV R0,[A003]MUL R0,[A003]MUL R0,[A003]MUL R0,[A003]MUL R0,[A003]MOV[A003],R0RET
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Reuso
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Reuso
ReusarEscribir subrutinas que puedan ser usadas en diferentessituaciones
Problema 1
Subrutina 1
Subrutina 2
Problema 2
Subrutina 1
Subrutina 3
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Reuso
ReusarEscribir subrutinas que puedan ser usadas en diferentessituaciones
Problema 1
Subrutina 1
Subrutina 2
Problema 2
Subrutina 1
Subrutina 3
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Parametros
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Reuso: parametros
Parametros
potencia MOV R0,???MUL R0,???MUL R0,???MUL R0,???MUL R0,???MOV ???,R0RET
La rutina potencia es mas flexible
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Reuso: Ejercicio
Se cuenta con una rutina que aplica un descuento dado comoparametro, sobre una valor que tambien se pasa como parametro:
descontar: MOV R6, R3 ; valor originalMUL R6, R4 ; descuento a aplicarDIV R6, 0x0064 ; multiplicar por 100SUB R3, R6RET
Hacer un programa que aplique un 10% de descuento al valor en lacelda 6565, un 30% al valor en la celda AAAA y un 45% al valoren 0367.
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Reuso: Ejercicio
Se cuenta con una rutina que aplica un descuento dado comoparametro, sobre una valor que tambien se pasa como parametro:
descontar: MOV R6, R3 ; valor originalMUL R6, R4 ; descuento a aplicarDIV R6, 0x0064 ; multiplicar por 100SUB R3, R6RET
Hacer un programa que aplique un 10% de descuento al valor en lacelda 6565, un 30% al valor en la celda AAAA y un 45% al valoren 0367.
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Modularizacioncall y retReuso
Reuso: Ejercicio
Hacer un programa que aplique un 10% de descuento al valor en lacelda 6565, un 30% al valor en la celda AAAA y un 45% al valoren 0367.
MOV R3, [6565]MOV R4, 0x000A ; 10%CALL descontar;MOV R3, [AAAA]MOV R4, 0x001E ; 30%CALL descontar;MOV R3, [0367]MOV R4, 0x002D ;45%CALL descontar;
descontar: MOV R6, R3MUL R6, R4DIV R6, 0x0064SUB R3, R6RET
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Contratos
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ejercicio
En dos grupos
Equipo A Escribir una rutina que calcule el promedio de lasnotas de un alumno, asumiendo que las notas estanen R4 y R5. El resultado debe dejarse en R6.
Equipo B Escribir un programa que calcule el promedio de 4estudiantes de una comision, cuyas notas estan en lasceldas 0B00 a 0B07.
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Inconvenientes
¿Cual es el problema del codigo no documentado?
Para entender lo que hace una rutina se debe tratar decomprender el codigo
Es dificil detectar errores secundarios: Cuando la rutinamodifica algo no esperado
Es dificil modificar el codigo para nuevos requerimientos
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Contratos
¿Como documentar el codigo?
Especificar:
Requiere Que necesita la rutina (Parametros y precondiciones)
Retorna En que variable (registro o memoria) se retorna elresultado
Modifica Que variables auxiliares se utilizan (registros,memoria, flags)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Contratos
¿Como documentar el codigo?
Especificar:
Requiere Que necesita la rutina (Parametros y precondiciones)¿Donde estan los parametros? (en que variables)¿Que caracterısticas deben tener? (distinto de 0, etc)
Retorna En que variable (registro o memoria) se retorna elresultado
Modifica Que variables auxiliares se utilizan (registros,memoria, flags)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Contratos
¿Como documentar el codigo?
Especificar:
Requiere Que necesita la rutina (Parametros y precondiciones)
Retorna En que variable (registro o memoria) se retorna elresultado¿Que caracterısticas es importante marcar delresultado?
Modifica Que variables auxiliares se utilizan (registros,memoria, flags)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Contratos
¿Como documentar el codigo?
Especificar:
Requiere Que necesita la rutina (Parametros y precondiciones)
Retorna En que variable (registro o memoria) se retorna elresultado
Modifica Que variables auxiliares se utilizan (registros,memoria, flags)¿Cambia alguna variable que no es el resultado?¿Cambian las variables que contienen parametros?
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ejercicio: documentar la rutina promedio
Requiere
Retorna
Modifica
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ejercicio: documentar la rutina promedio
Requiere Las notas estan en los registros R4 y R5. Los valoresestan en BSS(16)
Retorna El promedio en el registro R6, donde el promedioresulta de la division entera: (R4+R5)%2
Modifica nada
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ejercicio: documentar la rutina promedio
Requiere Las notas estan en los registros R4 y R5. Los valoresestan en BSS(16)
Retorna El promedio en el registro R6, donde el promedioresulta de la division entera: (R4+R5)%2
Modifica nada
Para documentar... ¿No es necesario haberlaimplementado??
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ejercicio: documentar la rutina promedio
Requiere Las notas estan en los registros R4 y R5. Los valoresestan en BSS(16)
Retorna El promedio en el registro R6, donde el promedioresulta de la division entera: (R4+R5)%2
Modifica nada
Ejercicio: usar la rutina promedio para calcular elpromedio de 4 estudiantes de una comision, cuyas
notas estan en las celdas 0B00 a 0B07, y ponga losresultados en las celdas 0B08 a 0B0B
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
MOV R4, [0B00]MOV R5, [0B01]CALL promedioMOV [0B08], R6MOV R4, [0B02]MOV R5, [0B03]CALL promedioMOV [0B09], R6MOV R4, [0B04]
MOV R5, [0B05]CALL promedioMOV [0B0A], R6MOV R4, [0B06]MOV R5, [0B07]CALL promedioMOV [0B0B], R6
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
MOV R4, [0B00]MOV R5, [0B01]CALL promedioMOV [0B08], R6MOV R4, [0B02]MOV R5, [0B03]CALL promedioMOV [0B09], R6MOV R4, [0B04]
MOV R5, [0B05]CALL promedioMOV [0B0A], R6MOV R4, [0B06]MOV R5, [0B07]CALL promedioMOV [0B0B], R6
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
MOV R4, [0B00] ←ParametroMOV R5, [0B01] ←ParametroCALL promedioMOV [0B08], R6MOV R4, [0B02] ←ParametroMOV R5, [0B03] ←ParametroCALL promedioMOV [0B09], R6MOV R4, [0B04] ←Parametro
MOV R5, [0B05] ←ParametroCALL promedioMOV [0B0A], R6MOV R4, [0B06] ←ParametroMOV R5, [0B07] ←ParametroCALL promedioMOV [0B0B], R6
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ejercicio: documentar la rutina potencia4
potencia4 MUL R0,R1MUL R0,R1MUL R0,R1MOV R2,R0RET
Requiere El valor a potenciar en R1
Retorna La potencia R14 en R2, queesta en el rango [0..216]
Modifica R0
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ejercicio: documentar la rutina potencia4
potencia4 MUL R0,R1MUL R0,R1MUL R0,R1MOV R2,R0RET
Requiere El valor a potenciar en R1
Retorna La potencia R14 en R2, queesta en el rango [0..216]
Modifica R0
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ejercicio: documentar la rutina descontar:
descontar: MOV R6, R3MUL R6, R4DIV R6, 0x0064SUB R3, R6RET
Requiere El valor original en R3
Retorna El valor con el descuento enR3
Modifica R6
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Ejercicio: documentar la rutina descontar:
descontar: MOV R6, R3MUL R6, R4DIV R6, 0x0064SUB R3, R6RET
Requiere El valor original en R3
Retorna El valor con el descuento enR3
Modifica R6
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
La Pila
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
¿Que es una pila?
La pila es una estructura para almacenar datos
Los datos se organizan apilados
Se utiliza mediante dos operaciones:
Apilar-push Cuando se escribe en la pila, se lo agrega”sobre” el ultimo agregado
Desapilar-pop Cuando se lee de la pila, se lo saca del ”tope”de la pila
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
¿Que es una pila?
La pila es una estructura para almacenar datos
Los datos se organizan apilados
Se utiliza mediante dos operaciones:
Apilar-push Cuando se escribe en la pila, se lo agrega”sobre” el ultimo agregado
Desapilar-pop Cuando se lee de la pila, se lo saca del ”tope”de la pila
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
¿Que es una pila?
La pila es una estructura para almacenar datos
Los datos se organizan apilados
Se utiliza mediante dos operaciones:
Apilar-push Cuando se escribe en la pila, se lo agrega”sobre” el ultimo agregado
Desapilar-pop Cuando se lee de la pila, se lo saca del ”tope”de la pila
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Funcionamiento de la pila
1 Estado original: Tope de pila en FFEF
...FFE9 ????FFEA ????FFEB ????FFEC ????FFED ????FFEE ????FFEF ????
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Funcionamiento de la pila
1 Estado original: Tope de pila en FFEF
2 Apilar elemento: 0010. Tope de pilaen FFEE
...FFE9 ????FFEA ????FFEB ????FFEC ????FFED ????FFEE ????FFEF 0010
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Funcionamiento de la pila
1 Estado original: Tope de pila en FFEF
2 Apilar elemento: 0010. Tope de pilaen FFEE
3 Apilar elemento: AAAA. Tope de pilaen FFED
...FFE9 ????FFEA ????FFEB ????FFEC ????FFED ????FFEE AAAAFFEF 0010
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Funcionamiento de la pila
1 Estado original: Tope de pila en FFEF
2 Apilar elemento: 0010. Tope de pilaen FFEE
3 Apilar elemento: AAAA. Tope de pilaen FFED
4 Desapilar elemento. Tope de pila enFFEE
...FFE9 ????FFEA ????FFEB ????FFEC ????FFED ????FFEE AAAAFFEF 0010
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Funcionamiento de la pila
1 Estado original: Tope de pila en FFEF
2 Apilar elemento: 0010. Tope de pilaen FFEE
3 Apilar elemento: AAAA. Tope de pilaen FFED
4 Desapilar elemento. Tope de pila enFFEE
5 Apilar elemento: 1111. Tope de pilaen FFED
...FFE9 ????FFEA ????FFEB ????FFEC ????FFED ????FFEE 1111FFEF 0010
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Funcionamiento de la pila
1 Estado original: Tope de pila en FFEF
2 Apilar elemento: 0010. Tope de pilaen FFEE
3 Apilar elemento: AAAA. Tope de pilaen FFED
4 Desapilar elemento. Tope de pila enFFEE
5 Apilar elemento: 1111. Tope de pilaen FFED
6 Apilar elemento: BBBB. Tope de pilaen FFEC
...FFE9 ????FFEA ????FFEB ????FFEC ????FFED BBBBFFEE 1111FFEF 0010
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Implementacion de Pila
La pila es un sector especial de la memoria
El seguimiento del tope de pila se lleva mediante un registroespecial SP (Stack Pointer)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Implementacion de Pila
Mem Ppal
FFFFSP
SP (Stack Pointer) contiene ladireccion de la primer celda dememoria disponible de la pila.
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Estructura de Pila: Push
PushSe hace una escritura del dato que esta en el bus de datos en ladireccion que esta en SPSe decrementa SP (ası sigue cumpliendo la condicion)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Estructura de Pila: Push
PushSe hace una escritura del dato que esta en el bus de datos en ladireccion que esta en SPSe decrementa SP (ası sigue cumpliendo la condicion)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Estructura de Pila: Push
datos
direcciones
control
Mem Ppal
FFFF
CPU
UC
ALU
IR
SP
Flags
PC
FFFF
0101
FFFF
Escritura
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Estructura de Pila: Push
datos
direcciones
control
Mem Ppal
FFFF
CPU
UC
ALU
IR
SP
Flags
PC
FFFE
0101
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Estructura de Pila: Pop
PopSe incrementa SP (para que haga referencia a un dato dentro dela pila)Se hace una lectura de la direccion que esta en SP
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Estructura de Pila: Pop
PopSe incrementa SP (para que haga referencia a un dato dentro dela pila)Se hace una lectura de la direccion que esta en SP
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Estructura de Pila: Pop
datos
direcciones
control
Mem Ppal
FFFF
CPU
UC
ALU
IR
SP
Flags
PC
FFFA
FFFA
01010B08D001DAA122301111
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Estructura de Pila: Pop
datos
direcciones
control
Mem Ppal
FFFF
CPU
UC
ALU
IR
SP
Flags
PC
FFFB
2230
FFFB
Lectura
01010B08D001DAA122301111
FFFB
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Estructura de Pila
El tamano y la ubicacion de la pila esta definido por laarquitectura.
El pop no blanquea el tope de la pila.
Cuando se hace push se pierde el valor que tenıa la celda (pordefinicion de escritura)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
¿Como funcionan CALL yRET?
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
¿Como funcionan CALL y RET?
CALL Desvıa el flujo del programa a la instruccion quedefine la etiqueta
RET Permite restituir el flujo del programa a la instruccionsiguiente del ultimo llamado
El ultimo llamado es el primero que se restituye
... me resulta conocido...
¡Se usa una pila!
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
¿Como funcionan CALL y RET?
El ultimo llamado es el primero que se restituye
... me resulta conocido...
¡Se usa una pila!
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
¿Como funcionan CALL y RET?
El ultimo llamado es el primero que se restituye
... me resulta conocido...
¡Se usa una pila!
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
¿Como funcionan CALL y RET?
CALL Apila la direccion de la siguiente instruccion
RET Desapila la direccion que habıa quedado pendienteen el programa que llamo.
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
¿Como funcionan CALL y RET?
Aja... ¿Y como se sabe la direccion siguiente?
¡Program Counter!
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
¿Como funcionan CALL y RET?
Aja... ¿Y como se sabe la direccion siguiente?
¡Program Counter!
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
¿Como funcionan CALL y RET?
CALL potA001
CALL potA002
CALL potA003
potA001CALL
RET
CALL
RET
potA002
potA003
CALL
RET
1 CALL potA001: se apila la direcciondel CALL potA002
2 RET: se desapila la direccion delCALL potA002
3 CALL potA002: se apila la direcciondel CALL potA003
4 RET: se desapila la direccion delCALL potA003
5 CALL potA001: se apila la direccionde la siguiente instruccion
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
Ejercicio: mostrar como varıa la pila
rutinaA: MOV R0, R1CALL rutinaBRET
rutinaB: SUB R0, 0x0003RET
CALL rutinaA
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
Arquitecturas Q
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
... tercer acto ...
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
Arquitectura Q3
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
Arquitectura Q3
Q3
Q1
Q2
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
Arquitectura Q3
Tiene 8 registros de uso general de 16 bits: R0..R7
Tiene direcciones de 16 bits
Tiene registros no visibles al programador:
Program counter de 16 bits.Stack Pointer de 16 bits. Comienza en la direccion FFEF.
permite 3 modos de direccionamiento:
modo registro: el valor buscado esta en un registromodo inmediato: el valor buscado esta codificado dentro de lainstruccionmodo directo: el valor buscado esta contenido en una celda dememoria
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
Arquitectura Q3: formato de instrucciones
Instrucciones de 2 operandos (MUL,MOV,ADD,SUB,DIV)
Cod Op Modo Destino Modo Origen Operando Destino Operando Origen(4b) (6b) (6b) (16b) (16b)
Instrucciones con un operando Origen: CALLCod Op Relleno Modo Origen Operando Origen(4b) (000000) (6b) (16b)
Instrucciones sin operandos: RETCod Op Relleno(4b) (000000000000)
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
Arquitectura Q3: Instrucciones Aritmeticas
Cod Op Modo Destino Modo Origen Operando Destino Operando Origen(4b) (6b) (6b) (16b) (16b)
Operacion CodOp
MUL 0000
MOV 0001
ADD 0010
SUB 0011
DIV 0111
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
Arquitectura Q3: Instrucciones con un operando Origen
Cod Op Relleno Modo Origen Operando Origen(4b) (000000) (6b) (16b)
Operacion CodOp Efecto
CALL 1011 [SP] ← PC; SP ← SP - 1; PC ← Origen
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
Arquitectura Q3: Instrucciones sin operandos
Tipo 5: Instrucciones sin operandos
Cod Op Relleno(4b) (000000000000)
Operacion CodOp Efecto
RET 1100 SP ← SP + 1; PC ← [SP]
Orga - UNQ Modularizacion y reuso de codigo
Ciclo de ejecucion revisadoRutinas
ContratosPila
Arquitectura Q3
Formato de las instrucciones
1 RutinasModularizacioncall y retReuso
2 Contratos
3 Pila
4 Arquitectura Q3
Orga - UNQ Modularizacion y reuso de codigo