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.
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:
- Primero se calculan todas las expresiones del lado derecho, quedando los resultados en un área temporal. Nada se modifica en esta etapa.
- 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