Arquitectura RISC de 32 bits desarrollada por Nedeljko Parezanović
NAR 2 ( serbio Na stavni R ačunar 2, en. Educational Computer 2) es un modelo teórico de una computadora de palabras de 32 bits creado por el profesor Nedeljko Parezanović de la Facultad de Matemáticas de la Universidad de Belgrado como una mejora de su predecesor, NAR 1 . Se utilizó para cursos de lenguaje ensamblador y arquitectura informática . La palabra "nar" significa granada en serbio . Se han creado muchos simuladores de NAR 2; por ejemplo, uno se llamó "Šljiva" ( en. ciruela ), ya que esa fruta crece en Serbia , mientras que "nar" no.
Estructura de instrucción
El procesador NAR 2 utiliza palabras de máquina de 32 bits. Cada instrucción de la máquina contiene:
- código de operación en los 8 bits más significativos (bits 24 a 31)
- 4 bits (20 a 23) que especifican el registro de índice que se utilizará con los modos de direccionamiento indexados
- 4 bits (16 a 19) que contienen indicadores de modo de dirección :
- bit 19: P ( sr. P osredno, en. mediado ) - indexado
- bit 18: R ( sr. R elativno) - relativo al contador del programa
- bit 17: I ( sr. I ndirektno) - memoria indirecta de múltiples niveles (nota: la dirección se carga desde la ubicación especificada y, si también especifica el indicador "I", el cálculo de la dirección indirecta continúa)
- bit 16: N ( sr. N eposredno) - inmediato
- Valor de parámetro con signo de 16 bits
Registros
NAR 2 tiene cuatro registros:
Mnemotécnica
Estaban disponibles los siguientes códigos de operación (no se especificaron los códigos reales, solo mnemotécnicos):
Acceso a memoria/registro
- MUA ( sr. M emorija U A kumulator , en. Memory Into Accumulator) carga el valor en el acumulador
- AUM ( sr. A kumulator U M emoriju , en. Accumulator Into Memory) almacena el contenido del acumulador.
- PIR ( sr. P unjenje Indeksnog R egistra , en. Load Index Register) Carga el valor en el registro de índice .
aritmética de enteros
Nota: todos los mnemotécnicos de este grupo terminan con la letra "F" que indica "Fiksni zarez" ( en. Punto fijo) aritmética. Sin embargo, esto sólo es cierto para la suma, la resta y la negación (cambio de signo). La multiplicación y la división suponen que el "punto" está fijo a la derecha del bit menos significativo, es decir, que los números son enteros.
- SABF ( sr. Sab eri u F iksnom zarezu , en. Agregar, punto fijo): agrega parámetro al acumulador
- ODUF ( sr. Odu zmi u F iksnom zarezu , en. Restar, Punto Fijo): resta el parámetro del acumulador
- MNOF ( sr. Mno ži u F iksnom zarezu , en. Multiplicar, Punto Fijo) - Multiplica el acumulador con el parámetro
- DELF ( sr. Deli i u F iksnom zarezu , en. Dividir, Punto Fijo) - Divide el acumulador por el parámetro
- PZAF ( sr. Promeni Z nak A kumulatora u F iksnom zarezu , en. Cambiar el signo del acumulador, punto fijo): cambia (invierte) el signo del acumulador
Aritmética de coma flotante
- SAB ( sr. Sab eri , en. Add) - agrega parámetro al acumulador
- ODU ( sr. Odu zmi , en. Restar): resta el parámetro del acumulador
- MNO ( sr. Mno ži , en. Multiplicar) - Multiplica el acumulador con el parámetro
- DEL ( sr. Deli , en . Divide) - Divide el acumulador por el parámetro
- PZA ( sr. Promeni Z nak A kumulatora , en. Cambiar el signo del acumulador) - Cambia ( invierte ) el signo del acumulador
Bit a bit/lógico
- KON ( sr. Kon junkcija , en. Conjunción ) - realiza un AND lógico con el parámetro y el acumulador y almacena el resultado en el acumulador
- DIS ( sr. Dis junkcija , en. Disjunction ) - realiza OR lógico con el parámetro y el acumulador y almacena el resultado en el acumulador
- NEG ( sr. Neg acija , en. Negación ): realiza un NOT lógico sobre el contenido del acumulador (ignora el parámetro)
Nota: las operaciones anteriores son todas bit a bit . Sus nombres implican que son operaciones puramente lógicas , pero pueden explicarse como si operaran con vectores de bits y aplicaran operaciones lógicas por separado en cada par de bits.
Cambios lógicos
- POL ( sr. Po meri L evo , en. Shift Left): desplaza los bits del acumulador hacia la izquierda
- POD ( sr. Po meri D esno , en. Shift Right): desplaza los bits del acumulador hacia la derecha
Control de flujo
- NES ( sr. Ne gativni Skok , en. Negative Jump) realiza un salto condicional a la dirección especificada por el parámetro si el valor actual del acumulador es negativo
- BES ( sr. Be zuslovni Skok , en. Salto incondicional) realiza un salto incondicional a la dirección especificada por el parámetro
- NUS ( sr. Nu la - Skok , en. Zero Jump) realiza un salto condicional a la dirección especificada por el parámetro si el valor actual del acumulador es cero
- ZAR ( sr. Za ustavi R ačunar , en. Stop the Computer) detiene cualquier procesamiento posterior; esta es la única instrucción que ignora el parámetro.
Sintaxis estándar del lenguaje ensamblador
La sintaxis del lenguaje ensamblador NAR 2 fue diseñada para ser sencilla y fácil de analizar. Cada línea de programa puede contener hasta una instrucción especificada de la siguiente manera:
- mnemónico de instrucción
- Espacios en blanco, si la instrucción especifica algún registro de índice, modo de direccionamiento o un parámetro y luego separados por comas:
- Nombre del registro índice, si se utiliza
- Nombres de indicadores del modo de direccionamiento (también separados por comas)
- Valor del parámetro
Código de muestra:
aum X1, p, 0 mua n, 1 aum 15 pir X1, p, n, 1 mua X1, p, n, 0 oduf n, 1 oduf X2, p, n, 0
Modos de direccionamiento
Con cuatro bits de selección de modo de dirección (P, R, I y N - indexado, relativo, indirecto e inmediato), las instrucciones NAR 2 pueden especificar 16 modos de direccionamiento diferentes, pero no todos tienen sentido en todas las instrucciones. En la siguiente tabla:
- M[x] especifica el valor de 32 bits (contenido) de la ubicación de memoria x
- BN especifica el contador del programa.
- p especifica el parámetro con signo de 16 bits en la ubicación
- Xi especifica el registro de índice seleccionado por los datos en la ubicación
- f() es la función de "valor efectivo" utilizada para el direccionamiento indirecto (ver detalles a continuación):
Nota 1: El indicador "N" (inmediato) no tiene efecto en las instrucciones de salto (control de flujo), ya que el procesador no puede saltar a un valor específico, sino solo a una dirección de memoria.
Memoria multinivel indirecta
NAR 2 admite el modo de direccionamiento indirecto de memoria multinivel . La ubicación se elige primero "mirando" los indicadores P (indexado) y R (relativo al contador del programa). Luego, si se detecta el indicador I (indirecto), se carga una palabra de 32 bits desde la ubicación de memoria calculada hasta el momento y se reinicia el cálculo (incluidos todos los indicadores del modo de direccionamiento, la selección del registro de índice y el valor del parámetro; solo se muestra el "código de operación"). omitido). Por lo tanto, el siguiente programa, si se carga en la ubicación de memoria 0 y se ejecuta:
mua I, 0 ; Memoria en acumulador, indirecta, desde la ubicación 0
... congelará NAR 2 en un bucle infinito de cálculo de direcciones:
- "I, 0" especifica que la dirección real se cargará desde la ubicación de memoria 0
- La ubicación de memoria 0 está cargada. Se lee "I, 0" nuevamente.
- "I, 0" especifica que la dirección real se cargará desde la ubicación de memoria 0
- La ubicación de memoria 0 está cargada. Se lee "I, 0" nuevamente.
- "I, 0" especifica que la dirección real se cargará desde la ubicación de memoria 0
- La ubicación de memoria 0 está cargada. Se lee "I, 0" nuevamente.
- ...
Tenga en cuenta que:
mua R, I, 0 ; Memoria en acumulador, relativa, indirecta, desde la ubicación BN+0
Parece más genérico (podría congelar NAR 2 desde cualquier ubicación), pero esto depende de cuándo se incrementa/cambia el valor del registro BN.
La cuestión del tratamiento del indicador "N" (inmediato) en presencia del indicador I (indirecto) está abierta ya que la situación es algo ambigua, es decir, si se debe respetar o no el valor del indicador especificado en la instrucción original o en el de la instrucción. La dirección especificada indirectamente (buscada) genera un conflicto. La tabla anterior presenta el primer caso que muestra los diferentes modos de direccionamiento que se pueden lograr de esta manera.
Lectura de valores de registros de índice
NAR 2 tiene instrucciones para inicializar el valor de un registro de índice particular (mnemotécnico "PIR"). Sin embargo, no tiene instrucciones especiales para leer registros de índice de valores. Esto se logra mediante el uso de indicadores de modo de direccionamiento indexados e inmediatos (P, N), como:
mua Xi, P, N, n; Memoria en acumulador, indexada, inmediata, 0
... lo que esencialmente pone a Xi+n en el acumulador. Para n=0, esto se convierte en una instrucción "cargar el valor del registro de índice en el acumulador".
Ver también
- NAR 1
- MMIX , otro procesador diseñado por un profesor para ayudar a los estudiantes a aprender.
enlaces externos
- Primeri seminarskih zadataka iz ORS - Ejemplos de tareas de estudiantes para el curso "ORS" (Conceptos básicos de sistemas informáticos), en idioma serbio . La tarea "V1: NAR" requiere que el estudiante escriba un simulador de NAR 2.