stringtranslate.com

Arquitectura PDP-11

La arquitectura PDP-11 [1] es una arquitectura de conjunto de instrucciones (ISA) CISC de 16 bits desarrollada por Digital Equipment Corporation (DEC). Se implementa mediante unidades centrales de procesamiento (CPU) y microprocesadores utilizados en las minicomputadoras PDP-11 . Fue ampliamente utilizado durante la década de 1970, pero finalmente fue eclipsado por la arquitectura VAX más poderosa en la década de 1980.

Memoria

Formatos de datos

La unidad más pequeña de memoria direccionable y grabable es el byte de 8 bits . También se pueden guardar bytes en la mitad inferior de los registros R0 a R5.

Las palabras de 16 bits se almacenan en formato little-endian con los bytes menos significativos en la dirección inferior. Las palabras siempre están alineadas con direcciones de memoria pares. Las palabras se pueden guardar en los registros R0 a R7.

Las palabras dobles de 32 bits en el conjunto de instrucciones extendidas (EIS) solo se pueden almacenar en pares de registros y la palabra más baja se almacena en el registro con el número más bajo. Las instrucciones MUL, DIV y ASHC utilizan palabras dobles. Se admiten otros datos de 32 bits como extensiones de la arquitectura básica: el punto flotante en el conjunto de instrucciones FPU o los datos largos en el conjunto de instrucciones comerciales se almacenan en más de un formato, incluido un formato medio-endian inusual [2] [3] a veces denominado "PDP-endian".

La opción de procesador de punto flotante (FPP) admite un formato de punto flotante de doble precisión de 64 bits para 11/45 y la mayoría de los modelos posteriores.

Gestión de la memoria

Las direcciones de 16 bits del PDP-11 pueden direccionar 64  KB . Cuando el PDP-11 cedió ante el VAX, los bytes de 8 bits y la notación hexadecimal se estaban convirtiendo en estándar en la industria; sin embargo, los valores numéricos del PDP-11 siempre utilizan notación octal y la cantidad de memoria adjunta a un PDP-11 siempre se indica como un número de palabras. El espacio de direcciones lógicas básico es de 32 K palabras, pero los 4 K de espacio de direcciones físicas (direcciones 160000 8 a 177777 8 en ausencia de administración de memoria) no se llenan porque los registros de entrada/salida en el bus responden a direcciones en ese rango. Originalmente, un PDP-11 completamente ampliado tenía 28.000 palabras, o 56 kbytes en términos modernos.

El procesador reserva direcciones de memoria baja para vectores de dos palabras que proporcionan un contador de programa y una palabra de estado del procesador con las que comenzar una rutina de servicio. Cuando un dispositivo de E/S interrumpe un programa, coloca la dirección de su vector en el bus para indicar qué rutina de servicio debe tomar el control. Los vectores más bajos son rutinas de servicio para manejar varios tipos de trampas. Se producen trampas en algunos errores de programa, como un intento de ejecutar una instrucción no definida; y también cuando el programa ejecuta una instrucción como BPT, EMT, IOT o TRAP para solicitar servicio al sistema operativo.

Ampliación de memoria

Durante la vida del PDP-11, el espacio de direcciones lógicas de 16 bits se convirtió en una limitación cada vez mayor. Se utilizaron varias técnicas para solucionarlo:

registros de CPU

La CPU contiene ocho registros de 16 bits de uso general (R0 a R7). El registro R7 es el contador de programa (PC). Aunque cualquier registro se puede utilizar como puntero de pila, R6 es el puntero de pila (SP) utilizado para interrupciones y trampas de hardware. R5 se utiliza a menudo para señalar el marco de llamada al procedimiento actual. Para acelerar el cambio de contexto, algunos modelos PDP-11 proporcionan conjuntos de registros duales R0-R5. Los modos Kernel, Supervisor (cuando esté presente) y Usuario tienen mapas de memoria separados y también punteros de pila separados (de modo que un programa de usuario no puede provocar un mal funcionamiento del sistema al almacenar un valor no válido en el registro del puntero de la pila).

Modos de direccionamiento

La mayoría de las instrucciones asignan seis bits para especificar un operando. Tres bits seleccionan uno de los ocho modos de direccionamiento y tres bits seleccionan un registro general.

La codificación del modo de direccionamiento de operandos de seis bits es la siguiente:


En las siguientes secciones, cada elemento incluye un ejemplo de cómo se escribiría el operando en lenguaje ensamblador. Rn significa uno de los ocho registros, escritos del R0 al R7.

Modos generales de direccionamiento de registros

Los siguientes ocho modos se pueden aplicar a cualquier registro general. Sus efectos cuando se aplican a R6 (el puntero de pila, SP) y R7 (el contador de programa, PC) se exponen por separado en las siguientes secciones.

En los modos de índice e índice diferido, X es un valor de 16 bits tomado de una segunda palabra de la instrucción. En instrucciones de doble operando, ambos operandos pueden usar estos modos. Estas instrucciones tienen tres palabras.

Las operaciones de autoincremento y autodecremento en un registro son 1 en instrucciones de bytes, 2 en instrucciones de palabra y 2 siempre que se utiliza un modo diferido, ya que la cantidad que las direcciones del registro es un puntero (palabra).

Modos de direccionamiento del contador del programa

Cuando se especifica R7 (el contador de programa), cuatro de los modos de direccionamiento naturalmente producen efectos útiles:

El único uso común del modo absoluto, cuya sintaxis combina el modo inmediato y el diferido, es especificar registros de entrada/salida, ya que los registros de cada dispositivo tienen direcciones de memoria específicas. El modo relativo tiene una sintaxis más simple y es más típico para hacer referencia a variables de programa y destinos de salto. Un programa que utiliza el modo relativo (y el modo diferido relativo) exclusivamente para referencias internas es independiente de la posición ; no contiene suposiciones sobre su propia ubicación, por lo que se puede cargar en una ubicación de memoria arbitraria, o incluso mover, sin necesidad de ajustar sus direcciones para reflejar su ubicación ( reubicar ). Al calcular dichas direcciones en relación con la ubicación actual, el procesador realizó la reubicación sobre la marcha.

Los modos inmediato y absoluto son simplemente modos de autoincremento y autoincremento diferido, respectivamente, aplicados a la PC. Cuando la palabra auxiliar está "en la instrucción", como dice la tabla anterior, la PC para la siguiente instrucción se incrementa automáticamente más allá de la palabra auxiliar. Como la PC siempre apunta a palabras, la operación de incremento automático es siempre de 2.

Modos de direccionamiento de pila

R6, también escrito SP, se utiliza como pila de hardware para trampas e interrupciones. Una convención impuesta por el conjunto de modos que proporciona el PDP-11 es que una pila crece hacia abajo (hacia direcciones inferiores) a medida que se insertan elementos en ella. Cuando se aplica un modo a SP, o a cualquier registro que el programador elija usar como pila de software, los modos de direccionamiento tienen los siguientes efectos:

Aunque las pilas de software pueden contener bytes, SP siempre es una pila de palabras. Las operaciones de autoincremento y autodecremento en SP siempre son de 2.

Conjunto de instrucciones

El PDP-11 opera con bytes y palabras. Los bytes se especifican mediante un número de registro (que identifica el byte de orden inferior del registro) o mediante una ubicación de memoria. Las palabras se especifican mediante un número de registro o mediante la ubicación de memoria del byte de orden inferior, que debe ser un número par. En la mayoría de las instrucciones que toman operandos, el bit 15 está configurado para especificar el direccionamiento de bytes o borrado para especificar el direccionamiento de palabras. En las listas de las dos secciones siguientes, el programador en lenguaje ensamblador añadió B al símbolo de instrucción para especificar una operación de byte; por ejemplo, MOV se convirtió en MOVB.

Algunas instrucciones, por ejemplo MARK y SOB, no se implementaron en algunos modelos PDP-11.

Instrucciones de doble operando

Los cuatro bits de orden superior especifican la operación a realizar (el bit 15 generalmente selecciona el direccionamiento de palabra versus byte). Dos grupos de seis bits especifican el modo de direccionamiento del operando de origen y el modo de direccionamiento del operando de destino, como se definió anteriormente.

Las instrucciones ADD y SUB utilizan direccionamiento de palabras y no tienen variaciones orientadas a bytes.

Algunas instrucciones de dos operandos utilizan un operando de modo de direccionamiento y un operando de registro adicional:

Cuando se utiliza un par de registros (escrito a continuación como "(Reg, Reg+1)", el primer registro contiene la parte de orden inferior del operando y debe ser un registro con número par. El siguiente registro con número superior contiene la parte de orden superior parte del operando (o el resto). Una excepción es la instrucción de multiplicación; Reg puede ser impar, pero si lo es, los 16 bits superiores del resultado no se almacenan.

Instrucciones de un solo operando

Los diez bits de orden superior especifican la operación a realizar, y el bit 15 generalmente selecciona el direccionamiento de bytes versus palabras. Un único grupo de seis bits especifica el operando tal como se define anteriormente.

Instrucciones de sucursal

En la mayoría de las instrucciones de bifurcación, la toma o no de la bifurcación se basa en el estado de los códigos de condición. Una instrucción de bifurcación suele estar precedida por una instrucción CMP (comparación) o BIT (prueba de bits) de dos operandos o una instrucción TST (prueba) de un operando. Las instrucciones aritméticas y lógicas también establecen los códigos de condición. A diferencia de los procesadores Intel en la arquitectura x86 , las instrucciones MOV también los configuran, por lo que se podría usar una instrucción de bifurcación para bifurcar dependiendo de si el valor movido era cero o negativo.

El byte de orden superior de la instrucción especifica la operación. Los bits del 9 al 15 son el código de operación y el bit 8 es el valor del cálculo del código de condición que da como resultado que se tome la rama. El byte de orden inferior es una palabra con signo desplazada con respecto a la ubicación actual del contador del programa. Esto permite bifurcaciones directas e inversas en el código.

El alcance limitado de las instrucciones de rama significaba que, a medida que el código creciera, las direcciones de destino de algunas ramas se volverían inalcanzables. El programador cambiaría la instrucción BR de una palabra por la instrucción JMP de dos palabras del siguiente grupo. Como JMP no tiene formas condicionales, el programador cambiaría BEQ por un BNE que se ramifica alrededor de un JMP.

SOB (Restar uno y bifurcar) es otra instrucción de bifurcación condicional. El registro especificado se reduce en 1 y, si el resultado no es cero, se realiza una rama inversa basada en el desplazamiento de palabra de 6 bits.

Instrucciones de subrutina

La instrucción JSR podría guardar cualquier registro en la pila. Los programas que no necesitaban esta característica especificaban PC como registro (JSR PC, dirección) y la rutina regresaba usando RTS PC. Si se llamara a una rutina con, por ejemplo, "JSR R4, dirección", entonces el valor antiguo de R4 estaría en la parte superior de la pila y la dirección de retorno (justo después de JSR) estaría en R4. Esto permite que la rutina obtenga acceso a valores codificados en línea especificando (R4)+, o a punteros en línea especificando @(R4)+. El incremento automático pasó de estos datos hasta el punto en el que se reanudó el código de la persona que llama. Tal rutina tendría que especificar RTS R4 para regresar a su llamador.

El formulario JSR PC,@(SP)+, que intercambia el contenido de la PC con el elemento superior de la pila, se puede utilizar para implementar corrutinas . Una vez que una rutina coloca la dirección de entrada de la corrutina en la pila, la ejecución de JSR PC,@(SP)+ guarda la PC en la pila y salta a la corrutina. Luego, ambas corrutinas pueden usar instrucciones JSR PC,@(SP)+ adicionales para saltar a la otra corrutina donde se quedó. Esto permite que las dos rutinas intercambien el control y se reanuden mutuamente en el punto del intercambio anterior.

El valor de PCmovido a Reges la dirección después de la instrucción JSR.

Instrucciones de trampa

Asignaciones de direcciones de vectores de trampa y excepción

Instrucciones varias

Operaciones de código de condición

Los cuatro códigos de condición en la palabra de estado del procesador (PSW) son

Las instrucciones de este grupo eran lo que Digital llamaba "microprogramadas": un solo bit en la palabra de instrucción hacía referencia a un único código de condición. El ensamblador no definió la sintaxis para especificar cada combinación, pero los símbolos SCC y CCC ensamblaron una instrucción que establecía o borraba, respectivamente, los cuatro códigos de condición.

Borrar o configurar ninguno de los códigos de condición (códigos de operación 000240 y 000260, respectivamente) podría considerarse efectivamente como instrucciones de no operación. De hecho, el mnemotécnico NOP se ensambló en 000240.

Instrucciones inconsistentes

A lo largo de la vida del PDP-11, surgieron diferencias sutiles en la implementación de instrucciones y combinaciones de modos de direccionamiento, aunque ninguna implementación se consideró correcta. Las inconsistencias no afectaron el uso normal del PDP-11.

Conjuntos de instrucciones opcionales

Conjunto de instrucciones extendido (EIS)

El EIS es una opción para el 35/11/40 y el 03/11 y se suministró como estándar en los procesadores más nuevos.

Conjunto de instrucciones flotantes (FIS)

FIS es una opción para los PDP-11/35/40 y 11/03. Los flotadores de precisión simple funcionan en una pila direccionada por un operando de registro. Los 13 bits de orden superior especifican la operación a realizar. Un campo de tres bits especifica qué registro se utiliza como puntero de pila de operandos de punto flotante. Cada flotante consta de dos palabras y cada instrucción de punto flotante opera en dos flotantes, devolviendo como resultado un flotante. El puntero de pila seleccionado se incrementa en un paso de 4 después de cada operación.

Procesador de coma flotante (FPP)

Esta era la opción de procesador de punto flotante opcional para 11/45 y la mayoría de los modelos posteriores.

Conjunto de instrucciones comerciales (CIS)

El conjunto de instrucciones comerciales, conocido como CIS o CIS11, agrega instrucciones de cadena y decimales codificadas en binario (BCD) utilizadas por COBOL y DIBOL . Se implementó mediante un microcódigo opcional el 23/11/24, y mediante un módulo complementario en el 44/11 y una versión del 74/11. [5]

Las cadenas están representadas por dos números enteros de 16 bits almacenados en dos registros de propósito general cualesquiera, o como dos valores de 16 bits en ubicaciones posteriores en la memoria. Uno se denomina "n", que tiene una longitud de hasta 64 kB, y el otro "A", que es un puntero al inicio de los datos de caracteres en la memoria. Juntos, un par n/A indica la ubicación y la longitud de la cuerda. Las operaciones básicas son MOVEC, MOVTC y MOVRC, que mueven los datos de caracteres en memoria desde la ubicación indicada en un par n/A hasta la ubicación en un segundo n/A, ambas en registros. MOVECI, MOVTCI y MOVRCI hicieron lo mismo pero con las ubicaciones indicadas por pares n/A en la memoria en lugar de registros. En todas las instrucciones de movimiento, si el origen es más corto que el destino, el destino se rellena; si el origen es más largo, se trunca. Si ocurre cualquiera de las dos cosas, los indicadores de estado del procesador se utilizan para indicarlo. [5]

MOVEC/MOVECI simplemente copia los datos de una ubicación a otra. MOVRC/MOVRCI invierte la cadena original en el destino. MOVTC/MOVTCI traduce caracteres durante la copia utilizando una tabla de búsqueda de 256 bytes contenida en un tercer par n/A, con la A apuntando al inicio de la tabla y los ocho bits inferiores de n son un código ASCII utilizado para completar la cadena de destino. si la cadena de origen es más corta. Las traducciones utilizan los valores de caracteres de la cadena de origen como números de índice y copian el valor de la tabla de traducción en ese índice en la cadena de destino. Esto se puede utilizar para conversiones EBCDIC , por ejemplo, colocando el código de carácter EBCDIC correspondiente para los códigos ASCII asignados en la tabla. El carácter "E" es el carácter 69 en ASCII y 197 en EBCDIC, por lo que para convertir EBCDIC a ASCII se haría una tabla de 256 bytes con un 69 en la ubicación 197. Cuando se llama a MOVTC y ve un 197 en la cadena original, generará 97 en la nueva cadena, realizando la conversión. [5]

Las comparaciones de cadenas son manejadas por CMPC, que establece los códigos de condición del procesador en función de los resultados de la comparación de dos cadenas. LOCC encuentra la primera aparición de un carácter en una cadena, mientras que SKPC busca el primer carácter que no coincide, utilizado para recortar espacios en blanco al inicio de cadenas, por ejemplo. SCANC y SPANC son similares a LOCC y SKPC, pero coinciden con cualquier carácter en un conjunto de caracteres enmascarados. Esto se puede utilizar, por ejemplo, para encontrar la siguiente aparición de cualquier carácter de salto de línea como VT, LF o CR. Los juegos de caracteres son una tabla de 256 bytes, dividida en subconjuntos. [a] Son similares a las tablas de traducción con los ocho bits inferiores de la primera palabra formando una máscara y la segunda palabra apuntando al inicio de la tabla. La máscara selecciona cuáles de los subconjuntos, hasta ocho, forman parte del conjunto de caracteres durante las comparaciones. Con este sistema, se pueden definir conjuntos de caracteres como mayúsculas, minúsculas, dígitos, etc. y luego realizar fácilmente una unión a través de la máscara, por ejemplo, seleccionando los subconjuntos de mayúsculas y minúsculas para producir el conjunto completo de letras. [5]

CIS también incluye un conjunto de tipos de datos e instrucciones para manipular números BCD. Estos datos también están representados por dos registros o ubicaciones de memoria de 16 bits, siendo el segundo número la A idéntica al caso de la cadena. La primera palabra ahora contiene cuatro campos que describen la representación de cadena de los datos, que incluyen dígitos empaquetados y desempaquetados, el manejo del signo y la longitud de la cadena, de 0 a 16. DEC se refería a datos desempaquetados, con un dígito por byte. , como "cadenas numéricas". Utilizando datos empaquetados, con dos dígitos BCD por byte, una cadena de 16 palabras contenía números BDC de hasta 32 dígitos. Las instrucciones incluían ADDP/ADDN para datos empaquetados y desempaquetados, SUBP/SUBN, ASHP/ASHN (desplazamiento aritmético) y CMPP/CMPN (comparar). Disponibles solo para datos empaquetados están MULP y DIVP. También incluye un conjunto de instrucciones para convertir números BCD entre formatos empaquetados y desempaquetados, así como hacia y desde valores binarios. [5]

Se utiliza un conjunto final de instrucciones para cargar cadenas y datos BCD hacia y desde los registros internos, evitando la necesidad de modificar bits en el código. [5]

Acceso a la palabra de estado del procesador (PSW)

La PSW está asignada a la dirección de memoria 177 776 y, por lo tanto, puede procesarse como cualquier dato. Las instrucciones que se encuentran en todos los PDP-11, excepto en los primeros, brindan a los programas un acceso más directo al registro.

Acceso a otros espacios de memoria

En los PDP-11 que proporcionan múltiples espacios de instrucciones y espacios de datos, un conjunto de instrucciones Move no ortogonales dan acceso a otros espacios. Por ejemplo, las rutinas del sistema operativo que manejan llamadas de servicio en tiempo de ejecución utilizan estas instrucciones para intercambiar información con la persona que llama.

Código de ejemplo

El siguiente código fuente del ensamblado PDP-11 es para una subrutina denominada que convierte una cadena de caracteres ASCIIZTOUPPER terminada en nulo a mayúsculas.

El siguiente código fuente del ensamblador del PDP-11 demuestra cómo se pueden utilizar los modos de direccionamiento del PDP-11 para escribir la misma rutina sin ningún registro general.

Velocidad

La velocidad del procesador PDP-11 varía según el modelo, la configuración de la memoria, el código de operación y los modos de direccionamiento. Los tiempos de instrucción tienen hasta tres componentes, recuperación/ejecución de la instrucción en sí y tiempo de acceso para el origen y el destino. Los dos últimos componentes dependen del modo de direccionamiento. Por ejemplo, en el PDP-11/70 (alrededor de 1975), una instrucción de la forma ADD  x (R m ), y (R n ) tenía un tiempo de búsqueda/ejecución de 1,35 microsegundos más tiempos de origen y destino de 0,6 microsegundos cada uno. , para un tiempo total de instrucción de 2,55 microsegundos. Cualquier caso en el que la memoria direccionada no esté en la caché suma 1,02 microsegundos. El ADD R m ,R n de registro a registro se puede ejecutar desde la memoria caché en 0,3 microsegundos. El punto flotante es aún más complejo, ya que existe cierta superposición entre la CPU y el procesador de punto flotante, pero en general, el punto flotante es significativamente más lento. Una instrucción de suma flotante de precisión simple oscila entre 2,4 y 5,5 microsegundos más el tiempo para recuperar los operandos. [6]

Interrumpe

El PDP-11 opera en un nivel de prioridad de 0 a 7, especificado por tres bits en la palabra de estado del procesador (PSW) , y los modelos de gama alta pueden operar en una variedad de modos: Kernel (privilegiado), Usuario (aplicación), y a veces Supervisor, según dos bits del PSW.

Para solicitar una interrupción, un dispositivo de bus activa una de las cuatro líneas de bus comunes, BR4 a BR7, hasta que el procesador responde. Los números más altos indicaron una mayor urgencia, tal vez que se podrían perder datos o que un sector deseado podría girar y perder contacto con los cabezales de lectura/escritura a menos que el procesador responda rápidamente. La preparación de la impresora para otro carácter tiene la prioridad más baja (BR4), ya que puede permanecer lista indefinidamente. Si el procesador funciona en el nivel 5, entonces BR6 y BR7 estarían en orden. Si el procesador está funcionando a 3 o menos, otorgará cualquier interrupción; si es 7, no concederá ninguno. Las solicitudes de autobús que no se conceden no se pierden sino que simplemente se aplazan. El dispositivo que necesita servicio continúa afirmando su solicitud de bus.

Siempre que una interrupción excede el nivel de prioridad del procesador, el procesador afirma la concesión de bus correspondiente, BG4 a BG7. Las líneas de concesión de bus no son líneas comunes, pero son una cadena tipo margarita : la entrada de cada puerta es la salida de la puerta anterior en la cadena. Hay una puerta en cada dispositivo de bus y un dispositivo físicamente más cercano al procesador está más temprano en la cadena. Si el dispositivo ha realizado una solicitud, al detectar su entrada de concesión de bus, concluye que tiene el control del bus y no pasa la señal de concesión al siguiente dispositivo en el bus. Si el dispositivo no ha realizado una solicitud, propaga su entrada bus-grant a su salida bus-grant, dándole al siguiente dispositivo más cercano la oportunidad de responder. (Si los dispositivos no ocupan ranuras adyacentes a la placa del procesador, las "tarjetas de concesión de continuidad" insertadas en las ranuras vacías propagan la línea de concesión de bus).

Una vez que tiene el control del bus, el dispositivo abandona su solicitud de bus y coloca en el bus la dirección de memoria de su vector de dos palabras. El procesador guarda el contador del programa (PC) y el PSW, ingresa al modo Kernel y carga nuevos valores del vector especificado. Para un dispositivo en BR6, el nuevo PSW en su vector normalmente especifica 6 como la nueva prioridad del procesador, por lo que el procesador atenderá las solicitudes más urgentes (BR7) durante la rutina de servicio, pero diferirá las solicitudes de igual o menor prioridad. En el nuevo PC, el procesador pasa a la rutina de servicio del dispositivo de interrupción. Esa rutina opera el dispositivo, al menos eliminando la condición que causó la interrupción. La rutina finaliza con la instrucción RTI (ReTurn from Interrupt), que restaura la PC y el PSW justo antes de que el procesador concediera la interrupción.

Si una solicitud de bus se realiza por error y ningún dispositivo responde a la concesión del bus, el procesador agota el tiempo de espera y realiza una trampa que sugiere hardware defectuoso.

Lenguaje ensamblador MACRO-11

Cinta perforada utilizada para PDP-11

MACRO-11 es el lenguaje ensamblador del PDP-11. Es el sucesor de PAL-11 (Program Assembler Loader), una versión anterior del lenguaje ensamblador PDP-11 sin funciones de macro. MACRO-11 es compatible con todos los sistemas operativos DEC PDP-11. Los sistemas Unix PDP-11 también incluyen un ensamblador (llamado " as "), estructuralmente similar a MACRO-11, pero con diferente sintaxis y menos funciones.

Ver también

Notas

  1. ^ La máscara de un byte implicaría que hay ocho subconjuntos de 32 caracteres cada uno, pero esto no se indica claramente en la documentación.

Referencias

  1. ^ Manual del procesador pdp11 pdp11/04/34a/44/60/70 (PDF) . DIC. 1979 . Consultado el 13 de noviembre de 2015 .
  2. ^ "Capítulo 7". manual del procesador pdp11/05/10/35/40 (PDF) . DIC. 1973.
  3. ^ Manual del procesador pdp11 pdp11/04/34a/44/60/70 (PDF) . DIC. 1979. pág. 421.
  4. ^ Dotzel, Günter (1986). "En LSI-11, RT-11, Megabytes de memoria y Modula-2/VRS" (PDF) .
  5. ^ abcdef "Conjunto de instrucciones comerciales". Manual del procesador pdp11 pdp11/04/34a/44/60/70 (PDF) . DIC. 1979.
  6. ^ Manual del procesador DEC PDP-11/70, 1975, Apéndice C, Sincronización de las instrucciones

Otras lecturas

enlaces externos