stringtranslate.com

Arquitectura del 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 . Se utilizó ampliamente durante la década de 1970, pero finalmente fue eclipsada 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 escribible es el byte de 8 bits . Los bytes también pueden almacenarse en la mitad inferior de los registros R0 a R5.

Las palabras de 16 bits se almacenan en orden little-endian , con los bytes menos significativos en la dirección inferior. Las palabras siempre se alinean con direcciones de memoria pares. Las palabras se pueden almacenar 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 inferior se almacena en el registro de número inferior. Las palabras dobles se utilizan en las instrucciones MUL, DIV y ASHC. 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 inusual de endian medio [2] [3], a veces denominado "PDP-endian".

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

Gestión de la memoria

Las direcciones de 16 bits del PDP-11 pueden direccionar 64  KB . Cuando el PDP-11 dio paso al 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 en el PDP-11 siempre utilizan notación octal, y la cantidad de memoria asociada a un PDP-11 siempre se indica como un número de palabras. El espacio de dirección lógica básica es de 32K palabras, pero los 4K de espacio de dirección física (direcciones 160000 8 a 177777 8 en ausencia de administración de memoria) no se completan porque los registros de entrada/salida en el bus responden a direcciones en ese rango. Por lo tanto, originalmente, un PDP-11 completamente expandido tenía 28K palabras, o 56 kbytes en términos modernos.

El procesador reserva direcciones de memoria bajas para vectores de dos palabras que proporcionan un contador de programa y una palabra de estado del procesador con la que iniciar 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. Las trampas ocurren en algunos errores del 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 del sistema operativo.

Expansió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 propósito 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 de hardware y trampas. R5 se utiliza a menudo para señalar el marco de llamada de 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 User 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 almacenando un valor no válido en el registro del puntero de 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 de R0 a 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 describen por separado en las siguientes secciones.

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

Las operaciones de autoincremento y autodecremento en un registro se incrementan en 1 en instrucciones de bytes, en 2 en instrucciones de palabras y en 2 siempre que se utilice un modo diferido, ya que la cantidad que direcciona el registro es un puntero (de palabras).

Modos de direccionamiento del contador de programas

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

El único uso común del modo absoluto, cuya sintaxis combina el modo inmediato y 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 que sus direcciones se ajusten para reflejar su ubicación ( reubicado ). Al calcular dichas direcciones relativas a la ubicación actual, el procesador realizó la reubicación sobre la marcha.

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

Modos de direccionamiento de pila

R6, también escrito SP, se utiliza como una 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 le agregan elementos. Cuando se aplica un modo a SP, o a cualquier registro que el programador elija utilizar como una 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 incremento y decremento automático en SP siempre se realizan en 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 utilizan operandos, el bit 15 se establece para especificar el direccionamiento de bytes, o se borra 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 bytes; 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 que se realizará (el bit 15 generalmente selecciona el direccionamiento de palabras o bytes). 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 de número par. El siguiente registro de número superior contiene la parte de orden superior 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 altos del resultado no se almacenan.

Instrucciones de un solo operando

Los diez bits de orden superior especifican la operación que se realizará; el bit 15 generalmente selecciona el direccionamiento de bytes o de palabras. Un solo grupo de seis bits especifica el operando, tal como se definió anteriormente.

Instrucciones de la rama

En la mayoría de las instrucciones de bifurcación, la decisión de si se realiza la bifurcación depende del estado de los códigos de condición. Una instrucción de bifurcación suele ir precedida de una instrucción CMP (comparación) o BIT (prueba de bits) de dos operandos o de 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 establecen, por lo que se podría utilizar 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 9 a 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 la bifurcación. El byte de orden inferior es un desplazamiento de palabra con signo en relación con la ubicación actual del contador del programa. Esto permite bifurcaciones hacia adelante y hacia atrás en el código.

El alcance limitado de las instrucciones de bifurcación significaba que, a medida que el código crecía, las direcciones de destino de algunas bifurcaciones se volvían inalcanzables. El programador cambiaba 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 cambiaba BEQ por una BNE que se bifurcaba en torno a una JMP.

SOB (Subtract One and Branch) es otra instrucción de bifurcación condicional. El registro especificado se decrementa en 1 y, si el resultado no es cero, se realiza una bifurcación inversa en función del desplazamiento de palabra de 6 bits.

Instrucciones de subrutina

JSR llama a una subrutina. Un grupo de seis bits especifica el modo de direccionamiento. La instrucción JSR puede guardar cualquier registro en la pila y cargar ese registro con la dirección de retorno. Los programas que no necesitan esta función especifican PC como el registro (JSR PC, dirección) y la rutina retorna utilizando RTS PC.

Si se llama a una rutina con, por ejemplo, "JSR R4, dirección", entonces el valor antiguo de R4 se coloca en la parte superior de la pila y la dirección justo después de JSR (normalmente, la dirección de retorno) se coloca en R4. Sin embargo, la rutina puede obtener acceso a valores codificados en línea especificando (R4)+, o a punteros en línea especificando @(R4)+. El autoincremento se desplaza más allá de estos datos, hasta el punto en el que se reanuda el código del llamador. En cualquier caso, una rutina de este tipo especifica RTS R4 para volver a su llamador.

La forma JSR PC,@(SP)+, que intercambia el contenido de 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 PC en la pila y salta a la corrutina. 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 entre sí en el punto del intercambio anterior.

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

MARK se utiliza para eliminar parámetros de la pila al salir de una subrutina. Primero, el llamador inserta R5 en la pila. A continuación, se pueden colocar hasta 63 argumentos de palabras en la pila. El llamador luego suma el número de argumentos al código de operación MARK y coloca ese resultado en la pila. El valor de SP se copia en R5. Finalmente, se ejecuta una dirección PC JSR para llamar a la subrutina. Después de ejecutar su código, la subrutina termina con un RTS R5. Esto carga el valor en R5 (que apunta a la instrucción MARK en la pila) en el PC y coloca la dirección de retorno del llamador en R5. Se ejecuta la instrucción MARK. MARK multiplica el número de argumentos por 2, lo suma a SP, elimina los argumentos y luego regresa al llamador con el equivalente de un RTS R5. MARK es inusual porque el llamador lo coloca en la pila de retorno para que la rutina de retorno lo ejecute más tarde directamente en la pila. La instrucción MARK rara vez se utiliza ya que su operación compleja se puede reemplazar por un ADD a SP. [5]

Instrucciones de la trampa

Asignaciones de direcciones de vectores de trampas y excepciones

Instrucciones varias

Operaciones con 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 denominaba "microprogramadas": un único bit en la palabra de instrucción hacía referencia a un único código de condición. El ensamblador no definía una sintaxis para especificar cada combinación, pero los símbolos SCC y CCC ensamblaban una instrucción que activaba o desactivaba, respectivamente, los cuatro códigos de condición.

La eliminación o el no establecimiento de ninguno de los códigos de condición (códigos de operación 000240 y 000260, respectivamente) podrían considerarse instrucciones de no operación. De hecho, el mnemónico NOP se combinó 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 extendidas (EIS)

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

Conjunto de instrucciones flotantes (FIS)

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

Procesador de punto flotante (FPP)

Esta era la opción de procesador de punto flotante opcional para el modelo 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 cadenas e instrucciones decimales codificadas en binario (BCD) utilizadas por COBOL y DIBOL . Se implementó mediante un microcódigo opcional en el 11/23/24, y mediante un módulo adicional en el 11/44 y una versión del 11/74. [6]

Las cadenas se representan mediante dos enteros de 16 bits almacenados en dos de los registros de propósito general, o como dos valores de 16 bits en ubicaciones posteriores en la memoria. Uno se designa como "n", que es la longitud hasta 64 kB, y el otro como "A", que es un puntero al comienzo de los datos de caracteres en la memoria. Juntos, un par n/A indica la ubicación y la longitud de la cadena. Las operaciones básicas son MOVEC, MOVTC y MOVRC, que mueven los datos de caracteres en la memoria desde la ubicación indicada en un par n/A a la ubicación en un segundo n/A, ambos 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, se rellena el destino, si el origen es más largo, se trunca. Si ocurre cualquiera de las dos cosas, se utilizan los indicadores de estado del procesador para indicarlo. [6]

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, donde A apunta 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 en 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 crearí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. [6]

Las comparaciones de cadenas son manejadas por CMPC, que establece los códigos de condición del procesador basados ​​en los resultados de la comparación de dos cadenas. LOCC encuentra la primera ocurrencia 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 comienzo de las 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 ocurrencia de cualquier carácter de salto de línea como VT, LF o CR. Los conjuntos de caracteres son una tabla de 256 bytes, dividida en subconjuntos. [a] Estos 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 comienzo de la tabla. La máscara selecciona cuál de los subconjuntos, hasta ocho, son parte del conjunto de caracteres durante las comparaciones. Usando este sistema, uno puede definir conjuntos de caracteres como mayúsculas, minúsculas, dígitos, etc. y luego hacer 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. [6]

El CIS también incluye un conjunto de tipos de datos e instrucciones para manipular números BCD. Estos datos también se representan mediante dos registros de 16 bits o ubicaciones de memoria, siendo el segundo número la A idéntica a la caja de 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, manejo del signo y la longitud de la cadena, de 0 a 16. DEC se refería a los datos desempaquetados, con un dígito por byte, como "cadenas numéricas". Usando datos empaquetados, con dos dígitos BCD por byte, una cadena de 16 palabras contenía números BDC de hasta 32 dígitos de longitud. Las instrucciones incluían ADDP/ADDN para datos empaquetados y desempaquetados, SUBP/SUBN, ASHP/ASHN (desplazamiento aritmético) y CMPP/CMPN (comparación). Solo están disponibles para datos empaquetados 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. [6]

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

Acceso a la palabra de estado del procesador (PSW)

El PSW está asignado a la dirección de memoria 177 776 y, por lo tanto, se puede procesar 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 brinda acceso a otros espacios. Por ejemplo, las rutinas del sistema operativo que manejan llamadas de servicio en tiempo de ejecución usan estas instrucciones para intercambiar información con el llamador.

Código de ejemplo

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

El siguiente código fuente del ensamblaje PDP-11 demuestra cómo se pueden usar 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: la obtención/ejecución de la instrucción misma y el 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 (circa 1975), una instrucción de la forma ADD  x (R m ), y (R n ) tenía un tiempo de obtención/ejecución de 1,35 microsegundos más tiempos de origen y destino de 0,6 microsegundos cada uno, para un tiempo de instrucción total de 2,55 microsegundos. Cualquier caso en el que la memoria direccionada no esté en la caché agrega 1,02 microsegundos. El ADD R m ,R n de registro a registro puede ejecutarse desde la 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 varía de 2,4 a 5,5 microsegundos más el tiempo para obtener los operandos. [7]

Interrupciones

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 alta gama pueden operar en una variedad de modos, Kernel (privilegiado), Usuario (aplicación) y, a veces, Supervisor, de acuerdo con dos bits en la 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 indican una mayor urgencia, tal vez que se pierdan datos o que un sector deseado pueda 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 es la prioridad más baja (BR4), ya que puede permanecer lista indefinidamente. Si el procesador está operando en el nivel 5, entonces BR6 y BR7 estarían en orden. Si el procesador está operando en 3 o inferior, concederá cualquier interrupción; si está en 7, no concederá ninguna. Las solicitudes de bus que no se conceden no se pierden, sino que simplemente se posponen. El dispositivo que necesita servicio continúa activando su solicitud de bus.

Siempre que una interrupción excede el nivel de prioridad del procesador, el procesador activa la concesión de bus correspondiente, BG4 a BG7. Las líneas de concesión de bus no son líneas comunes, sino que forman una cadena tipo margarita : la entrada de cada compuerta es la salida de la compuerta anterior en la cadena. Hay una compuerta en cada dispositivo de bus, y un dispositivo físicamente más cercano al procesador está antes en la cadena tipo margarita. 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 de concesión de bus a su salida de concesión de bus, lo que le da 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 continuidad de concesión" 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 descarta 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 de programa (PC) y la PSW, ingresa al modo Kernel y carga nuevos valores del vector especificado. Para un dispositivo en BR6, la nueva PSW en su vector generalmente especifica 6 como la nueva prioridad del procesador, por lo que el procesador respetará las solicitudes más urgentes (BR7) durante la rutina de servicio, pero diferirá las solicitudes de la misma prioridad o de una prioridad menor. Con el nuevo PC, el procesador salta a la rutina de servicio para el dispositivo que interrumpe. Esa rutina opera el dispositivo, al menos eliminando la condición que causó la interrupción. La rutina termina con la instrucción RTI (ReTurn from Interrupt), que restaura el PC y la PSW como estaban justo antes de que el procesador otorgara la interrupción.

Si se realiza una solicitud de bus por error y ningún dispositivo responde a la concesión de bus, el procesador agota el tiempo de espera y realiza una trampa que sugiere un 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 del PDP-11 sin funciones de macros. 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 una sintaxis diferente y menos funciones.

Véase también

Notas

  1. ^ La máscara de un byte implicaría que hay ocho subconjuntos de 32 caracteres cada uno, pero esto no está claramente indicado 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). "Sobre LSI-11, RT-11, Megabytes de memoria y Modula-2/VRS" (PDF) .
  5. ^ "Manual del procesador PDP11/40". Digital Equipment Corporation . Consultado el 16 de julio de 2024 .
  6. ^ abcdef "Conjunto de instrucciones comerciales". Manual del procesador pdp11 pdp11/04/34a/44/60/70 (PDF) . DICIEMBRE DE 1979.
  7. ^ Manual del procesador DEC PDP-11/70, 1975, Apéndice C, Sincronización de instrucciones

Lectura adicional

Enlaces externos