Clase 6 (4/9): Q1

Se comenzó la clase con consultas de la primera parte de la práctica de Q1.

Luego, se profundizó sobre lo visto en la clase anterior (Codigo máquina y fuente para las instrucciones).

Proceso de ensamblado:
Para que los programas escritos en Q1 sean ejecutables, deben estar escritos en código máquina, para lo cual se establecen reglas de “traducción” de codigo fuente a codigo máquina para que estas instrucciones sean entendibles por las computadoras.

Esto es conocido como formato de instrucción, que define la organización de los bits dentro de una instrucción. El mismo debe incluir información acerca de las operaciones a resolver y los datos a utilizar (código de la operación y un mecanismo para llegar al/los operando/s).

La estructura para las instrucciones esta compuesta de:
(Operación -4b) (Modo Destino -6b) (Modo Origen -6b) (Destino -16b) (Origen -16b)

Los codigos de las operaciones y modos vistos hasta ahora son:

|——————-|
|Operación | Cod Op |
|==========|========|
| MUL | 0000 |
| MOV | 0001 |
| ADD | 0010 |
| SUB | 0011 |
| DIV | 0111 |
|——————-|
|———————|
| Modo | Cod Op |
|==========|==========|
|Inmediato | 000000 |
|Registro | 100rrr | Donde rrr se corresponde al número del registro a utilizar
|———————|

Según este formato la instrucción ADD R0, 0x0005 se traduce en:
0010 100000 000000 0000000000000101
(CodOp) (modoDest) (modoOr) (Origen)

En este caso, el operando destino no se utiliza porque en Q1 solo puede ser un registro, y esa información siempre se va a encontrar en el modoDest

Para mejorar la legibilidad de las instrucciones, se utilizará una escritura compactada a hexadecimal, de esta manera, la instruccion anterior se escribe 28000005

El proceso inverso (Desensamblado) es el que se realiza en la clase práctica para pasar de una instrucción codificada a una instrucción legible para una persona, el mismo consiste en separar una cadena de bits en codOp, modoDestino, modoOrigen, y operandoOrigen y luego traducirla según la tabla correspondiente.

¿Cómo es la ejecuciòn de programas en esta arquitectura?
1) Al comienzo del ciclo, la UC hace la lectura de instrucción, obteniendo la cadena 28000005
2) La UC decodifica la instrucción, identificando un ADD, que se traduce en una señal a la ALU pidiendo una suma, y una copia de los operandos a las entradas de la ALU. En Q1, el operando destino puede ser uno de los 8 registros (R0 a R7), y el operando origen puede ser además un valor inmediato (que está incluido en la instrucción).
3) La ALU ejecuta la suma y el resultado se dirige a R0.

Luego se proyectó un video de como utilizar QSim (Programa utilizado para simular la ejecución de instrucciones y verificar si un ejercicio esta bien resuelto) y se dedico el tiempo restante de la clase a instalar QSim y terminar la práctica verificando los ejercicios en el simulador.