El llamado Microprocessor without Interlocked Pipeline Stages, mejor conocido como MIPS se refiere a una arquitectura de microprocesadores que se basa en registros. Particularmente, los procesadores MIPS32 contienen 32 registros de propósito general. Su arquitectura se basa fundamentalmente en la arquitectura RISC, que se caracteriza por tener instrucciones cuyo tamaño no varía y que de esas instrucciones, solo las de carga (load) y almacenamiento (store) acceden a la memoria de datos que se encuentra en él. Además, se tiene una buena optimización de la segmentación de instrucciones
Este tipo de lenguaje es también conocido como ensamblador o lenguaje de bajo nivel ya que presentan órdenes básicas que son ejecutadas por el computador. Cabe destacar que cada arquitectura de procesador tiene su propio lenguaje ensamblador que es definida por el fabricante de hardware.
El lenguaje Mips tiene 3 formatos de instrucciones, los cuales son
Registro (Tipo R): son instrucciones de registro simples, con un operando y tres registros contenidos en la palabra de 32 bits, como lo son sumar, restar, or, and y slt.
Inmediato (Tipo I): son similares a las tipo R, pero sólo incluyen un registro, y usan los otros 16bits empleados en las de tipo R para indicar los otros dos registros para almacenar valores inmediatos.
Salto (Tipo J): Por último, las de tipo J son saltos, conteniendo un operando y una dirección de 26 bits y que se hacen de forma inmediata.
Todas las instrucciones en MIPS tienen un código de operación de 6 bits de tamaño, en el cual de indica la instrucción que se va a realizar. As instrucciones de propósito general se pueden consultar en Internet y son 12 instrucciones, cada una con su nombre, el registro y el uso que tienen para que sean empleadas de forma correcta a la hora de programar.
El lenguaje ensamblador consta de 4 directivas a saber:
Nemónicos: para representar los nombres de las instrucciones de máquina de bajo nivel, como lo son load word (lw), suma (add), resta (sub), store (almacena)…Es decir, que identifican la operación a realizar
Etiquetas: para representar los nombres de las variables o direcciones de memoria, como lo son $t1,….,$t7, $s0,…,$s4 entre otras.
Directivas: definir datos y constantes, como lo son la directiva .byte, .word, .space, .float etc.
Macros: para facilitar la expansión en línea del texto en otro código
Las instrucciones del lenguaje de ensamblaje tienen el formato:
[Etiqueta:] nemónicos [operandos] [#comentarios]
Por ejemplo: L1: addiu $ t0, $ t0, 1 #incremento $t0 = $t0+1
Generalmente, do programa ensamblador tiene una directiva .Data que es donde se definen los datos que estarán inicialmente en la memoria RAM y una directiva .Text que es donde se definen las instrucciones a ejecutar, teniendo en cuenta que la memoria se ve como una matriz direccionable de bytes, donde la dirección apunta a un byte en la memoria.
Sin embargo, las palabras ocupan 4 bytes consecutivos en la memoria y las instrucciones MIPS y números enteros ocupan 4 bytes.
Finalmente, hay que añadir que la arquitectura MIPS proporciona una instrucción syscall para obtener servicios desde el sistema operativo ya que el sistema operativo maneja todas las llamadas al sistema solicitadas por el programa