Instrucciones

 Cargar literal al stack

Carga el valor en bits 14-0 en el stack (con el bit 15 en cero).

Salto incondicional 

Salta al destino indicado en los bits 11-0.

Una dirección por si misma es un salto incondicional, ya que sus bits 15-12 son ceros.
 

Salto relativo base + T

Salta a la dirección resultante de sumar el tope del stack con los bits 11-0. El tope es descartado.

Salto condicional

Salta a la dirección en bits 11-0 si el valor al tope del stack es cero. El tope es descartado sin importar su valor.

Llamada directa

La dirección de la siguiente instrucción se guarda en el stack de retorno. La ejecución prosigue en la dirección de los bits 11-0. 

Llamada relativa base + T

Igual que la llamada directa, pero la dirección se calcula sumando el valor al tope del stack con los bits 11-0. El tope del stack es descartado.

Si la dirección resultante tiene el bit 12 en 1, el contenido de la dirección en bits 11-0 es cargado al stack (en lugar de ser interpretado como instrucción). Esta es la única manera de leer la memoria.

ALU


La instrucción se divide en varios campos que operan en paralelo.

La correcta interpretación de esta instrucción es:

  1. Primero se calculan todas las expresiones del lado derecho, quedando los resultados en un área temporal. Nada se modifica en esta etapa.
  2. Todos los resultados se asignan a las variables de destino desde el área temporal

Subcampo T' bits 11-8. Indica de donde viene el próximo valor para 

    Código Operación
    0     T
    1     N
    2     T + N
    3     T and N
    4     T or N
    5     T xor N
    6    ~T          (invierte los bits)
    7     N == T
    8     N < T
    9     T >> 1
   10     T << 1
   11     R
   12     N - T
   13     IO[T]       Lee desde E/S T
   14     depth       Stack de datos
   15     abs(N) - abs(T)

Subcampo R -> PC. Bit 7. Copia R al Programa Counter.

Subcampo Func bits 7-4. Indica que otra operación 

    Código Operación
    1    N <- T
    2    R <- T
    3    [T] <- N    Graba N en dirección T
    4    IO[T] <- N  Graba N en la dirección E/S T  

Subcampo rstack bits 3-2. Indica el desplazamiento del stack de retorno: 0, 1, -1.

Subcampo dstack bits 1-0. Indica el desplazamiento del stack de datos: 0, 1, -1.




No hay comentarios.:

Publicar un comentario