fbpx
Wikipedia

MIX (lenguaje de programación)

MIX es una computadora hipotética usada en la monografía de Donald Knuth, El Arte de Programar Computadoras (en inglés, The Art of Computer Programming o TAOCP), MIX es el modelo numérico 1009, que deriva de modelos numéricos y nombres contemporáneos, máquinas comerciales influyentes para el autor. (“MIX” también es el valor 1009 en numeración romana.)

En la década de los '60s MIX fue superado por una nueva (también hipotética) arquitectura computacional, MMIX (2009), incorporada en las siguientes ediciones de TAOCP. Las implementaciones de software tanto para arquitecturas MIX como MMIX, han sido desarrolladas y liberadas por Knuth como “MIXware” y “MMIXware,” respectivamente.

Existen también muchos derivados de los emuladores MIX/MMIX de Knuth. GNU MDK, por ejemplo, es un paquete de software liberado y corre sobre una gran variedad de plataformas.

Su propósito para la educación es similar a la Arquitectura DLX desarrollada por John L. Hennessy y David A. Patterson, para la Arquitectura de computadoras: Una Aproximación Cuantitativa (en inglés, Computer Architecture: A Quantitative Approach).

Arquitectura

MIX es una computadora híbrida binaria/decimal. Cuando se programa en binario, cada byte contiene 6 bits (valores de rango de 0 a 63). En el decimal, cada byte tiene 2 dígitos decimales (valores del rango 0 a 99). Los bytes se agrupan en palabras de cinco bytes además de un signo. Muchos de los programas escritos para MIX trabajan indistintamente en binario o decimal, siempre y cuando el almacenamiento no supere el valor de 63 en un simple byte.

Una palabra puede contener valores en un rango de −1.073.741.823 a 1.073.741.823 en modo binario y −9.999.999.999 a 9.999.999.999 en modo decimal. la represetación de valores integrales de signo y Magnitud distinguen en la arquitectura MIX entre “−0” y “+0.”, esto contrasta con la computadoras modernas, para quienes las representaciones de cantidades integrales de complemento a dos incluyen una representación única para el cero, pero para quien el rango mayor de valores pertenece a los números negativos y no a los positivos.

Registradores

Hay 9 tipos de registros en MIX:

  • rA: Acumulador (palabra completa, cinco bytes y un signo).
  • rX: Extensión (palabra completa, cinco bytes y un signo).
  • rI1, rI2, rI3, rI4, rI5 rI6: Registro índice (dos bytes y un signo).
  • rJ: Salto de dirección (dos bytes, siempre positivos).

Se asume como un byte a 6 bits. La mayoría puede especificar la posición de los campos (bytes) del registro que serán modificados, usando un sufijo con la forma (primero:último) ((first:last)). El campo de orden cero es el bit de signo.

MIX también registra también si la operación anterior se sobrecargo, y tiene un triple indicador de comparación (menor que' less than, igual que qual to, o mayor que or greater than). En el siguiente diagrama se muestra como se dividen esos campos.

± A1 A2 A3 A4 A5
± X1 X2 X3 X4 X5
+ J4 J5
OV?
<=>?
± I1.4 I1.5
± I2.4 I2.5
± I3.4 I3.5
± I4.4 I4.5
± I5.4 I5.5
± I6.4 I6.5

Memoria y entrada/salida

La máquina MIX tiene 4000 palabras de almacenamiento (cada una con 5 bytes y un signo), direcciones desde 0 a 3999. Una variedad de dispisitivo de entrada y salida también incluidas:

  • Unidad de cinta (dispisitivo 0…7).
  • Unidad de disco (dispisitivo 8…15).
  • Lector de tarjeta (dispisitivo 16).
  • Perfordor de tarjeta (dispisitivo 17).
  • Impresora lineal (dispisitivo 18).
  • Terminal de tipeado (dispisitivo 19).
  • Cinta de papel (dispisitivo 20).

Instructiones

Cada instrucción máquina en memoria ocupa una palabra, y consiste en cuatro elementos: la dirección (2 bytes y el signo de la palabra) en memoria a ser leída o escrita; una especificación de índice (1 byte, describiendo donde se usara el índice de registro rI) para agregar a la dirección; una modificación (1 byte) que especifica qué partes del espacio del registro o memoria será leída o alterada; y el código de la operación (1 byte). Todo el código de la operación tiene una asociación mnemónica.

Los programas en MIX frecuentemente usan código flexible, en particular para retornar desde una subrutina. ya que MIX carece de una pila de subrutina para el retorno automático. El código flexible facilita la modicación del byte, permitiendo que el programa almacene datos para, por ejemplo, la parte de una dirección de destino de instrucción, dejando sin modificar al resto de la instrucción.

Los programas MIX están generalmente construidos usando el Lenguaje Ensamblador MIX o MIXAL. El siguiente ejemplo fue tomado del tema códigos de programas hola mundo en direfentes lenguajes de programación:

LDA ADDR,i(0:5) rA := memoria[ADDR + rIi];
LDX ADDR,i(0:5) rX := memoria[ADDR + rIi];
LD? ADDR,i(0:5) rI? := memoria[ADDR + rIi];
LDAN ADDR,i(0:5) rA := - memoria[ADDR + rIi];
LDXN ADDR,i(0:5) rX := - memoria[ADDR + rIi];
LD?N ADDR,i(0:5) rI? := - memoria[ADDR + rIi];
STA ADDR,i(0:5) memoria[ADDR + rIi] := rA;
STX ADDR,i(0:5) memoria[ADDR + rIi] := rX;
ST? ADDR,i(0:5) memoria[ADDR + rIi] := rI?;
STJ ADDR,i(0:5) memoria[ADDR + rIi] := rJ;
STZ ADDR,i(0:5) memoria[ADDR + rIi] := 0;
ADD ADDR,i(0:5) rA := rA + memoria[ADDR + rIi];
SUB ADDR,i(0:5) rA := rA - memoria[ADDR + rIi];
MUL ADDR,i(0:5) (rA, rX) := rA * memoria[ADDR + rIi];
DIV ADDR,i(0:5) rA := int( (rA, rX) / memoria[ADDR + rIi] );
rX := (rA, rX) % memoria[ADDR + rIi];
ENTA ADDR,i rA := ADDR + rIi;
ENTX ADDR,i rX := ADDR + rIi;
ENT? ADDR,i rI? := ADDR + rIi;
ENNA ADDR,i rA := - ADDR - rIi;
ENNX ADDR,i rX := - ADDR - rIi;
ENN? ADDR,i rI? := - ADDR - rIi;
INCA ADDR,i rA := rA + ADDR + rIi;
INCX ADDR,i rX := rX + ADDR + rIi;
INC? ADDR,i rI? := ADDR + rIi;
DECA ADDR,i rA := rA - ADDR - rIi;
DECX ADDR,i rX := rX -ADDR - rIi;
DEC? ADDR,i rI? := rI? - ADDR - rIi;
CMPA ADDR,i(0:5) comparar rA con memoria[ADDR + rIi];
CMPX ADDR,i(0:5) comparar rX con memoria[ADDR + rIi];
CMP? ADDR,i(0:5) comparar rI? con memoria[ADDR + rIi];
JMP ADDR,i rJ := dirección de la siguiente instrucción;
ir a ADDR + rIi;
JSJ ADDR,i ir a ADDR + rIi;
JOV ADDR,i si (sobrecarga) entonces
   sobrecarga := falso; ir a ADDR + rIi;
JNOV ADDR,i si (no sobrecarga) entonces
   ir a ADDR + rIi;
sino sobrecarga := falso;
JL, JE, JG ADDR,i
JGE, JNE, JLE ADDR,i
si (menor, igual, mayor) mientras ir a ADDR + rIi;
si (no menor, desigual, no mayor) entonces ir a ADDR + rIi;
JAN/JAZ/JAP ADDR,i
JANN/JANZ/JANP ADDR,i
si (rA<0 o rA==0 o rA>0) entonces ir a ADDR + rIi;
si (rA>=0 o rA!=0 o rA<=0) entonces ir a ADDR + rIi;
JXN/JXZ/JXP ADDR,i
JXNN/JXNZ/JXNP ADDR,i
si (rX<0 o rX==0 o rX>0) entonces ir a ADDR + rIi;
si (rX>=0 o rX!=0 o rX<=0) entonces ir a ADDR + rIi;
J?N/J?Z/J?P ADDR,i
J?NN/J?NZ/J?NP ADDR,i
si (rI?<0 o rI?==0 o rI?>0) ir a ADDR + rIi;
si (rI?>=0 o rI?!=0 o rI?<=0) ir a ADDR + rIi;
MOVE ADDR,i(F) para (n = 0; n < F; n++, rI1++)
    memoria[ADDR+rIi+n] := memoria[rI1];
SLA/SRA ADDR,i
SLAX/SRAX ADDR,i
SLC/SRC ADDR,i
cmabiar rA a la izquierda/derecha por ADDR+rIi bytes
cambiar (rA, rX) a la izquierda/derecha por ADDR+rIi bytes
rotatar (rA, rX) a la izquierda/derecha por ADDR+rIi bytes
NOP hacer nada;
HLT concluir ejecución;
IN ADDR,i(F) leer en un bloque desde la unidad de entrada F
en la memoria[ADDR + rIi] adelante;
OUT ADDR,i(F) imprimir un bloque para la unidad F
desde la memoria[ADDR + rIi] adelante;
IOC ADDR,i(F) enviar la instrucción de control e/s a la unidad F;
JRED ADDR,i(F) si (la unidad de e/s F esta lista) entonces ir a ADDR + rIi;
JBUS ADDR,i(F) si (la unidad de e/s F está ocupada) entonces ir a ADDR + rIi;
NUM rA := el valor numérico de los caracteres en (rA, rX);
CHAR (rA, rX) := valor de los código de carácter representado de rA;

Véase también

Enlaces externos

  • MMIX 2009: Una Computadora RISC para el Tercer Milenio Página oficial sobre MIX de D. Knuth
  • Noticias sobre MMIX Página oficial de noticias sobre MIX de D. Knuth
  • MMIXware: Una Computadora RISC para el Tercer Milenio Página oficial del Libro sobre MIX de D. Knuth
  • MIX-MMIX/MIXAL-MMIXAL en Open Directory Project.
  • Hardware::Simulator::MIX módulo Perl para CPAN
  •   Datos: Q371805

lenguaje, programación, computadora, hipotética, usada, monografía, donald, knuth, arte, programar, computadoras, inglés, computer, programming, taocp, modelo, numérico, 1009, deriva, modelos, numéricos, nombres, contemporáneos, máquinas, comerciales, influyen. MIX es una computadora hipotetica usada en la monografia de Donald Knuth El Arte de Programar Computadoras en ingles The Art of Computer Programming o TAOCP MIX es el modelo numerico 1009 que deriva de modelos numericos y nombres contemporaneos maquinas comerciales influyentes para el autor MIX tambien es el valor 1009 en numeracion romana En la decada de los 60s MIX fue superado por una nueva tambien hipotetica arquitectura computacional MMIX 2009 incorporada en las siguientes ediciones de TAOCP Las implementaciones de software tanto para arquitecturas MIX como MMIX han sido desarrolladas y liberadas por Knuth como MIXware y MMIXware respectivamente Existen tambien muchos derivados de los emuladores MIX MMIX de Knuth GNU MDK por ejemplo es un paquete de software liberado y corre sobre una gran variedad de plataformas Su proposito para la educacion es similar a la Arquitectura DLX desarrollada por John L Hennessy y David A Patterson para la Arquitectura de computadoras Una Aproximacion Cuantitativa en ingles Computer Architecture A Quantitative Approach Indice 1 Arquitectura 1 1 Registradores 1 2 Memoria y entrada salida 1 3 Instructiones 2 Vease tambien 3 Enlaces externosArquitectura EditarMIX es una computadora hibrida binaria decimal Cuando se programa en binario cada byte contiene 6 bits valores de rango de 0 a 63 En el decimal cada byte tiene 2 digitos decimales valores del rango 0 a 99 Los bytes se agrupan en palabras de cinco bytes ademas de un signo Muchos de los programas escritos para MIX trabajan indistintamente en binario o decimal siempre y cuando el almacenamiento no supere el valor de 63 en un simple byte Una palabra puede contener valores en un rango de 1 073 741 823 a 1 073 741 823 en modo binario y 9 999 999 999 a 9 999 999 999 en modo decimal la represetacion de valores integrales de signo y Magnitud distinguen en la arquitectura MIX entre 0 y 0 esto contrasta con la computadoras modernas para quienes las representaciones de cantidades integrales de complemento a dos incluyen una representacion unica para el cero pero para quien el rango mayor de valores pertenece a los numeros negativos y no a los positivos Registradores Editar Hay 9 tipos de registros en MIX rA Acumulador palabra completa cinco bytes y un signo rX Extension palabra completa cinco bytes y un signo rI1 rI2 rI3 rI4 rI5 rI6 Registro indice dos bytes y un signo rJ Salto de direccion dos bytes siempre positivos Se asume como un byte a 6 bits La mayoria puede especificar la posicion de los campos bytes del registro que seran modificados usando un sufijo con la forma primero ultimo first last El campo de orden cero es el bit de signo MIX tambien registra tambien si la operacion anterior se sobrecargo y tiene un triple indicador de comparacion menor que less than igual que qual to o mayor que or greater than En el siguiente diagrama se muestra como se dividen esos campos A1 A2 A3 A4 A5 X1 X2 X3 X4 X5 J4 J5 OV lt gt I1 4 I1 5 I2 4 I2 5 I3 4 I3 5 I4 4 I4 5 I5 4 I5 5 I6 4 I6 5Memoria y entrada salida Editar La maquina MIX tiene 4000 palabras de almacenamiento cada una con 5 bytes y un signo direcciones desde 0 a 3999 Una variedad de dispisitivo de entrada y salida tambien incluidas Unidad de cinta dispisitivo 0 7 Unidad de disco dispisitivo 8 15 Lector de tarjeta dispisitivo 16 Perfordor de tarjeta dispisitivo 17 Impresora lineal dispisitivo 18 Terminal de tipeado dispisitivo 19 Cinta de papel dispisitivo 20 Instructiones Editar Cada instruccion maquina en memoria ocupa una palabra y consiste en cuatro elementos la direccion 2 bytes y el signo de la palabra en memoria a ser leida o escrita una especificacion de indice 1 byte describiendo donde se usara el indice de registro rI para agregar a la direccion una modificacion 1 byte que especifica que partes del espacio del registro o memoria sera leida o alterada y el codigo de la operacion 1 byte Todo el codigo de la operacion tiene una asociacion mnemonica Los programas en MIX frecuentemente usan codigo flexible en particular para retornar desde una subrutina ya que MIX carece de una pila de subrutina para el retorno automatico El codigo flexible facilita la modicacion del byte permitiendo que el programa almacene datos para por ejemplo la parte de una direccion de destino de instruccion dejando sin modificar al resto de la instruccion Los programas MIX estan generalmente construidos usando el Lenguaje Ensamblador MIX o MIXAL El siguiente ejemplo fue tomado del tema codigos de programas hola mundo en direfentes lenguajes de programacion LDA ADDR i 0 5 rA memoria ADDR rIi LDX ADDR i 0 5 rX memoria ADDR rIi LD ADDR i 0 5 rI memoria ADDR rIi LDAN ADDR i 0 5 rA memoria ADDR rIi LDXN ADDR i 0 5 rX memoria ADDR rIi LD N ADDR i 0 5 rI memoria ADDR rIi STA ADDR i 0 5 memoria ADDR rIi rA STX ADDR i 0 5 memoria ADDR rIi rX ST ADDR i 0 5 memoria ADDR rIi rI STJ ADDR i 0 5 memoria ADDR rIi rJ STZ ADDR i 0 5 memoria ADDR rIi 0 ADD ADDR i 0 5 rA rA memoria ADDR rIi SUB ADDR i 0 5 rA rA memoria ADDR rIi MUL ADDR i 0 5 rA rX rA memoria ADDR rIi DIV ADDR i 0 5 rA int rA rX memoria ADDR rIi rX rA rX memoria ADDR rIi ENTA ADDR i rA ADDR rIi ENTX ADDR i rX ADDR rIi ENT ADDR i rI ADDR rIi ENNA ADDR i rA ADDR rIi ENNX ADDR i rX ADDR rIi ENN ADDR i rI ADDR rIi INCA ADDR i rA rA ADDR rIi INCX ADDR i rX rX ADDR rIi INC ADDR i rI ADDR rIi DECA ADDR i rA rA ADDR rIi DECX ADDR i rX rX ADDR rIi DEC ADDR i rI rI ADDR rIi CMPA ADDR i 0 5 comparar rA con memoria ADDR rIi CMPX ADDR i 0 5 comparar rX con memoria ADDR rIi CMP ADDR i 0 5 comparar rI con memoria ADDR rIi JMP ADDR i rJ direccion de la siguiente instruccion ir a ADDR rIi JSJ ADDR i ir a ADDR rIi JOV ADDR i si sobrecarga entonces sobrecarga falso ir a ADDR rIi JNOV ADDR i si no sobrecarga entonces ir a ADDR rIi sino sobrecarga falso JL JE JG ADDR iJGE JNE JLE ADDR i si menor igual mayor mientras ir a ADDR rIi si no menor desigual no mayor entonces ir a ADDR rIi JAN JAZ JAP ADDR iJANN JANZ JANP ADDR i si rA lt 0 o rA 0 o rA gt 0 entonces ir a ADDR rIi si rA gt 0 o rA 0 o rA lt 0 entonces ir a ADDR rIi JXN JXZ JXP ADDR iJXNN JXNZ JXNP ADDR i si rX lt 0 o rX 0 o rX gt 0 entonces ir a ADDR rIi si rX gt 0 o rX 0 o rX lt 0 entonces ir a ADDR rIi J N J Z J P ADDR iJ NN J NZ J NP ADDR i si rI lt 0 o rI 0 o rI gt 0 ir a ADDR rIi si rI gt 0 o rI 0 o rI lt 0 ir a ADDR rIi MOVE ADDR i F para n 0 n lt F n rI1 memoria ADDR rIi n memoria rI1 SLA SRA ADDR iSLAX SRAX ADDR iSLC SRC ADDR i cmabiar rA a la izquierda derecha por ADDR rIi bytescambiar rA rX a la izquierda derecha por ADDR rIi bytesrotatar rA rX a la izquierda derecha por ADDR rIi bytesNOP hacer nada HLT concluir ejecucion IN ADDR i F leer en un bloque desde la unidad de entrada Fen la memoria ADDR rIi adelante OUT ADDR i F imprimir un bloque para la unidad Fdesde la memoria ADDR rIi adelante IOC ADDR i F enviar la instruccion de control e s a la unidad F JRED ADDR i F si la unidad de e s F esta lista entonces ir a ADDR rIi JBUS ADDR i F si la unidad de e s F esta ocupada entonces ir a ADDR rIi NUM rA el valor numerico de los caracteres en rA rX CHAR rA rX valor de los codigo de caracter representado de rA Vease tambien EditarLenguaje de programacion educativos DLX LC 3 Little man computer MMIX MikroSimEnlaces externos EditarMMIX 2009 Una Computadora RISC para el Tercer Milenio Pagina oficial sobre MIX de D Knuth Noticias sobre MMIX Pagina oficial de noticias sobre MIX de D Knuth MMIXware Una Computadora RISC para el Tercer Milenio Pagina oficial del Libro sobre MIX de D Knuth MIX MMIX MIXAL MMIXAL en Open Directory Project Hardware Simulator MIX modulo Perl para CPAN Datos Q371805Obtenido de https es wikipedia org w index php title MIX lenguaje de programacion amp oldid 136830574, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos