stringtranslate.com

MIX (máquina abstracta)

MIX es una computadora hipotética utilizada en la monografía de Donald Knuth , The Art of Computer Programming ( TAOCP ). El número de modelo de MIX es 1009, que se obtuvo combinando los números de modelo y los nombres de varias máquinas comerciales contemporáneas que el autor consideró importantes. Además, "MIX" leído como número romano es 1009.

El MIX de la década de 1960 ha sido reemplazado desde entonces por una nueva arquitectura informática (también hipotética), MMIX , que se incorporará en las próximas ediciones de TAOCP .

Knuth ha desarrollado y puesto a disposición de forma gratuita implementaciones de software para las arquitecturas MIX y MMIX (con el nombre de "MIXware" y "MMIXware", respectivamente). También existen varios derivados de los emuladores MIX/MMIX de Knuth. GNU MDK es uno de esos paquetes de software; es gratuito y funciona en una amplia variedad de plataformas.

Su propósito para la educación es bastante similar a la arquitectura DLX de John L. Hennessy y David A. Patterson , de Computer Organization and Design - The Hardware Software Interface .

Arquitectura

MIX es un sistema binario - decimal híbrido . Cuando se programa en binario, cada byte tiene 6 bits (los valores van de 0 a 63). En decimal, cada byte tiene 2 dígitos decimales (los valores van de 0 a 99). Los bytes se agrupan en palabras de cinco bytes más un signo. La mayoría de los programas escritos para MIX funcionarán en binario o decimal, siempre y cuando no intenten almacenar un valor mayor que 63 en un solo byte.

Una palabra tiene un rango de −1.073.741.823 a 1.073.741.823 (inclusive) en modo binario, y de −9.999.999.999 a 9.999.999.999 (inclusive) en modo decimal. La representación de números enteros mediante signo y magnitud en la arquitectura MIX distingue entre “−0” y “+0”. Esto contrasta con las computadoras modernas, cuya representación de cantidades enteras en complemento a dos incluye una única representación para el cero, pero cuyo rango para una cantidad dada de bits incluye un entero negativo más que la cantidad de enteros positivos representables.

Registros

Hay 9 registros en MIX:

Se supone que un byte tiene al menos 6 bits. La mayoría de las instrucciones pueden especificar cuáles de los "campos" (bytes) de un registro se deben modificar, utilizando un sufijo de la forma (first:last) . El campo cero es el signo de un bit.

MIX también registra si la operación anterior se desbordó y tiene un indicador de comparación de un trit (menor que, igual a o mayor que).

Memoria y entrada/salida

La máquina MIX tiene 4000 palabras de memoria (cada una con 5 bytes y un signo), direccionadas de 0 a 3999. También se incluyen una variedad de dispositivos de entrada y salida:

Instrucciones

Cada instrucción de máquina en memoria ocupa una palabra y consta de 4 partes: la dirección (2 bytes y el signo de la palabra) en memoria para leer o escribir; una especificación de índice (1 byte, que describe qué registro de índice rI utilizar) para agregar a la dirección; una modificación (1 byte) que especifica qué partes del registro o ubicación de memoria se leerán o alterarán; y el código de operación (1 byte). Todos los códigos de operación tienen un mnemónico asociado.

Los programas MIX utilizan frecuentemente código automodificable, en particular para regresar de una subrutina, ya que MIX carece de una pila de retorno automático de subrutinas. El código automodificable se facilita mediante el byte de modificación, que permite al programa almacenar datos, por ejemplo, en la parte de dirección de la instrucción de destino, dejando el resto de la instrucción sin modificar.

Los programas MIX normalmente se construyen utilizando el lenguaje ensamblador MIXAL; para ver un ejemplo, consulte la página de lista de programas hola mundo.

Implementaciones

MIX ha sido implementado en software por:

En 2021 se creó una implementación de MIX para la placa FPGA iCE40HX8K. [3]

Véase también

Referencias

  1. ^ mix(1)  – 9 página del manual
  2. ^ Módulo Perl Hardware::Simulator::MIX de CPAN
  3. ^ "Michael Schröder / mix-fgpa". GitLab .

Enlaces externos