NAR 2

Arquitectura RISC de 32 bits desarrollada por Nedeljko Parezanović

NAR 2 ( en 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 de la Facultad de Matemáticas de la Universidad de Belgrado Nedeljko Parezanović como una mejora de su predecesor, NAR 1. Se utilizó para cursos de lenguaje ensamblador y arquitectura de computadoras . La palabra "nar" significa granada en serbio . Se han creado muchos simuladores de NAR 2; por ejemplo, uno se llamó "Šljiva" ( en. ciruela ) porque esa fruta crece en Serbia , mientras que "nar" no.

Estructura de la instrucción

La unidad central de procesamiento NAR 2 utiliza palabras de máquina de 32 bits. Cada instrucción de máquina contiene:

Registros

NAR 2 tiene cuatro registros:

Mnemotécnica

Los siguientes códigos de operación estaban disponibles (no se especificaron los códigos reales, solo los mnemónicos):

Acceso a memoria/registro

  • MUA ( sr. M emorija U A kumulator , en. Memory Into Accumulator) carga el valor en el acumulador
  • AUM ( sr. Acumulador en memoria , en . Acumulador en memoria) almacena el contenido del acumulador .
  • PIR ( sr. P unjenje I ndeksnog R egistra , en. Load Index Register ) Carga el valor en el registro de índice.

Aritmética de números enteros

Nota: todos los mnemónicos de este grupo terminan con la letra "F", que indica aritmética de " punto fijo". Sin embargo, esto solo 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ámetros al acumulador
  • ODUF ( sr. Odu zmi u F iksnom zarezu , en. Subtract, Fixed Point) - 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. Del i u F iksnom zarezu , en. Divide, Punto fijo) - Divide el acumulador por el parámetro
  • PZAF ( sr. P romeni 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 punto flotante

  • SAB ( sr. Sab eri , en. Add) - agrega parámetro al acumulador
  • ODU ( sr. Odu zmi , en. Subtract) - resta el parámetro del acumulador
  • MNO ( sr. Mno ži , en. Multiplicar) - Multiplica el acumulador con el parámetro
  • DEL ( sr. Del i , en. Divide) - Divide el acumulador por el parámetro
  • PZA ( sr. P romeni Z nak A kumulatora , en. Cambiar el signo del acumulador) - Cambia (invierte) el signo del acumulador

Bit a bit/lógico

Nota: las operaciones anteriores son todas operaciones bit a bit . Sus nombres implican que son operaciones puramente lógicas , pero se pueden explicar como si operaran sobre vectores de bits y aplicaran operaciones lógicas por separado sobre cada par de bits.

  • 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 S kok , 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 S kok , en. Unconditional Jump) realiza un salto incondicional a la dirección especificada por el parámetro
  • NUS ( sr. Nu la- S kok , 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. Detener la computadora , en . Detener el ordenador) detiene cualquier procesamiento posterior; esta es la única instrucción que ignora el parámetro .

Sintaxis del lenguaje ensamblador estándar

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:

  1. Mnemotécnico de instrucción
  2. Espacio en blanco, si la instrucción especifica algún registro de índice, modo de direccionamiento o un parámetro y luego separado por comas:
    1. Nombre del registro de índice, si se utiliza
    2. Nombres de los indicadores del modo de direccionamiento (también separados por comas)
    3. 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 direccionamiento indirecto (ver detalles a continuación):
Banderas de direccionesTipo de instrucción
PAGRInorteDatosSaltar
 -  -  -  - M[p]pag
 -  -  - nortepagpag
 -  - I - M[f(M[p])]f(M[p])
 -  - Inortef(M[p])f(M[p])
 - R -  - M[BN+p]BN+p
 - R - norteBN+pBN+p
 - RI - M[f(M[BN+p])]f(M[BN+p])
 - RInortef(M[BN+p])f(M[BN+p])
PAG -  -  - M[Xi+p]Xi+p
PAG -  - norteXi+pXi+p
PAG - I - M[f(M[Xi+p])]f(M[Xi+p])
PAG - Inortef(M[Xi+p])f(M[Xi+p])
PAGR -  - M[BN+Xi+p]BN+Xi+p
PAGR - norteBN+Xi+pBN+Xi+p
PAGRI - M[f(M[BN+Xi+p])]f(M[BN+Xi+p])
PAGRInortef(M[BN+Xi+p])f(M[BN+Xi+p])

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 especificado, sino solo a una dirección de memoria.

Memoria multinivel indirecta

NAR 2 admite el modo de direccionamiento indirecto de memoria de varios niveles . La ubicación se elige primero "observando" los indicadores P (indexado) y R (relativo al contador de 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 de modo de direccionamiento, la selección de registro de índice y el valor del parámetro; solo se omite el "código de operación"). 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 de cálculo de dirección infinito:

  1. "I, 0" especifica que la dirección real se cargará desde la ubicación de memoria 0
  2. Se carga la posición de memoria 0. Vuelve a leer "I, 0"
  3. "I, 0" especifica que la dirección real se cargará desde la ubicación de memoria 0
  4. Se carga la posición de memoria 0. Vuelve a leer "I, 0"
  5. "I, 0" especifica que la dirección real se cargará desde la ubicación de memoria 0
  6. Se carga la posición de memoria 0. Vuelve a leer "I, 0"
  7. ...

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 respeta o no el valor del indicador especificado en la instrucción original o el de la dirección especificada indirectamente (buscada) conduce a 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 los registros de índice

NAR 2 tiene instrucciones para inicializar el valor de un registro de índice en particular (mnemónico "PIR"). Sin embargo, no tiene instrucciones especiales para leer valores de registros de índice. Esto se logra mediante el uso de indicadores de modo de direccionamiento indexado e inmediato (P, N), como:

mua Xi, P, N, n ; Memoria en acumulador, indexada, inmediata, 0

... que básicamente coloca Xi+n en el acumulador. Para n=0, esto se convierte en una instrucción de "cargar valor de registro de índice en el acumulador".

Véase también

  • NAR 1
  • MMIX , otro procesador diseñado por un profesor para ayudar a los estudiantes a aprender.
  • Primer seminario de formación en sistemas informáticos - Ejemplos de trabajos para estudiantes del curso "ORS" (Fundamentos de sistemas informáticos), en idioma serbio . La tarea "V1: NAR" requiere que el estudiante escriba un simulador de NAR 2.
Obtenido de "https://es.wikipedia.org/w/index.php?title=NAR_2&oldid=1235730138"