Clase 5 (01/09). Ejecución de programas en Q1

Se retomó el juego de los panaderos con la salvedad de que las instrucciones ahora poseen códigos, se pide hacer una receta y luego traducirla a los codigos para que un robot inteligente que interpreta las recetas las pueda entender.
Se introducen las nociones de código fuente (comprensible por un humano) y código maquina (que es interpretable por la CPU), los mismos se encuentran relacionados ya que el programador escribe un programa en codigo fuente y que mediante
un interprete se ensambla y pasa a ser código máquina para ser ejecutado en una computadora, en lo que es el ciclo de vida de un programa.

En la arquitectura de VN, la ALU realiza las operaciones aritméticas con operandos suministrados por la UC, la que tambien
le indica a la ALU que operación llevar a cabo, la misma es realizada y la UC toma el resultado sobre los datos de entrada
provistos. Estas son las etapas de ejecución de un programa.

INSERTAR GRAFICO CICLO DE EJECUCION

Luego se agrego una nueva variación a las recetas para ensamblar, que son contar con opciones como:

  • Agregar los huevos que hay en la huevera (Los que haya)
  • Agregar 3 cucharadas de aceite

De esta manera se introducen los modos de direccionamiento (mecanismo por el cual la UC obtiene el operando requerido), que son:

  • Modo inmediato: El valor buscado esta codificado en una constante dentro de la instrucción
  • Modo registro: El valor buscado esta en un registro (que es un espacio de almacenamiento interno a la CPU)

Pasa a presentarse Q1, que es una arquitectura “teorica” que se va a utilizar en la materia, la cual cuenta con 8 registros para utilizar, un set de instrucciones que se utilizarán para realizar operaciones entre registros y constantes.
En Q1 se manejan datos de tipo BSS(16).

Los registros a utilizar son el R0, R1, R2, R3, R4, R5, R6 y R7.

Las instrucciones a utilizar son:

Operando | Operación |
=========|======================|
ADD | Suma |
=========|======================|
SUB | Resta |
=========|======================|
MUL | Multiplicación |
=========|======================|
DIV | División Entera |
=========|======================|
MOV | Copia de registros |

Se utilizan de la siguiente manera:

ADD destino, origen = destino <– destino + origen
SUB destino, origen = destino <– destino – origen
MUL destino, origen = (R7, destino) <– destino * origen (Los 16 bits mas significativos en destino, el resto en R7)
DIV destino, origen = destino <– destino % origen
MOV destino, origen = destino <– origen

Los operandos destino u origen pueden ser variables (registros) o constantes (cadenas de 16 bits representadas en hexa con la notacion 0xcadena de bits representada en hexa)

Ejemplos de programas en Q1

ADD R7, 0x0002 ==> Suma el contenido de R7 mas 2
MOV R6, R0 ==> Copia el valor de R0 en R6

Luego se resolvieron los ejercicios del 1 al 19 de la práctica de los cuales los grupos pasaron al pizarrón a resolver los ejercicios 3,4,9,10,14 y 16