Hoy despertamos sabiendo la arquitectura donde se va a montar este Sistema Operativo. Como cualquier arquitectura, tiene su propio conjunto de instrucciones, y en el caso de la Arquitectura eWa, seleccionada por su sencillez, se trata de un conjunto de instrucciones bastante reducido.
Las instrucciones o mnemónicos usados habitualmente para comenzar a desarrollar un Sistema Operativo dependen de aquellas instrucciones que reconozca la Arquitectura en la que se va a ejecutar, soliendo coincidir con las instrucciones que el Sistema Informático entiende. En general, el conjunto de mnemónicos determinan el lenguaje de ensamblador que se usará
En nuestro caso, cada una de las instrucciones que entiende el Sistema Informático se nombrará con su correspondiente cifra hexadecimal. Como la Arquitectura eWa está orientada a ofrecer la mayor sencillez y personalización, el desarrollo del lenguaje de ensamblador será cosa nuestra. Por ese motivo, nuestro primer objetivo será pondremos manos a la obra para poder crear y determinar ese lenguaje de ensamblador que nos permitirá desarrollar el código fuente de procesos que se ejecutarán en código máquina sobre el Sistema Informático.
Lo primero que vamos a hacer es conocer un poco las
instrucciones que nos ofrece esta
arquitectura. Las
instrucciones que nos ofrece la
Arquitectura eWa,
sólo 16 (
24) ya que cada
instrucción ocupa
4 bits, están
explicadas en la documentación, pero voy a intentar resumirlas aquí brevemente. Están clasificadas en cuatro grupos:
- Las de asignación: se trata de instrucciones que nos permiten escribir en los registros WVUZ de la CPU. A su vez, están divididas en negativas (que ponen el valor 0 binario) y positivas (que ponen el valor 1 binario), siendo en total ocho. Las instrucciones "0", "1", "2" y "3" ponen el valor 0 a W, V, U y Z respectivamente; mientras que las instrucciones "4", "5", "6" y "7" ponen en esos registros el valor 1 en el mismo orden.
- La de condición: se trata de una instrucción (la "8") que realiza algo similar a las anteriores. Consiste en poner en el registro W el valor del registro K ambos de la CPU. El llamarla "de condición" veremos que se debe a que gracias a esto, podremos implementar la función "if" y derivados en nuestro sistema.
- Las de ejecución: se trata de las instrucciones "9" y "A" que llamaran a las funciones de ejecución de la ABU y la MMU respectivamente. Estas funciones de ejecución, como comentaba en la entrada anterior, permiten en el caso de la ABU realizar operaciones con los grupos de registros MN, OP y XY, y que la MMU trabaje con sus punteros en función de los valores de los registros ZUVW de la CPU.
- Las de lectura y escritura: las siguientes últimas cinco instrucciones están destinadas a trabajar con el registro K de la CPU. La instrucción "B" llamará a la función de acceso (lectura o escritura) de la ABU; las instrucciones "C" y "D" llaman respectivamente a la función de lectura y a la función de escritura de la CPU; y las instrucciones "E" y "F" llamará respectivamente a la función de lectura y a la función de escritura sobre el Espacio de Direcciones a través de la MMU.
Y con estas 16 instrucciones tenemos todas las funciones básicas para armar nuestro propio lenguaje de ensamblador que se usará para comenzar a desarrollar el Sistema Operativo.