Búsqueda personalizada

martes, 15 de enero de 2008

Set de Intrucciones Maquina Sparc

Aqui va otra info sobre maquinas sparcs, lo hago por que por lo general cuesta encontrar informacion al respecto, espero que les sirva.

op1, op2 y op3 pueden ser un registro, dirección de memoria, desplazamiento

Instrucciones aritméticas

ADD[cc]: Suma op1 a op2 y almacena el resultado en op3.
ADDX[cc]: Suma op1 a op2 y el carry y almacena el resultado en op3.
SUB[cc]: Resta op2 a op1 y almacena el resultado en op3
SUBX[cc]: Resta op2 y el carry a op1 y almacena el resultado en op3

Instrucciones lógicas

AND[cc]: Realiza el "and" bit a bit entre op1 y op2 y almacena el resultado en op3.
OR[cc]: Realiza el "or" bit a bit entre op1 y op2 y almacena el resultado en op3.
XOR[cc]: Realiza el "xor" bit a bit entre op1 y op2 y almacena el resultado en op3.

Instrucciones de desplazamiento

SLL: Realiza un shift a la izquierda de los bits de op1, op2 lugares y almacena el
resultado en op3. Sólo considera los 5 bits más significativos de op2 para determinar el valor del contador. Rellena con ceros.
SRL: Realiza un shift a la derecha de los bits de op1, op2 lugares y almacena el
resultado en op3. Sólo considera los 5 bits más significativos de op2 para determinar el valor del contador. Rellena con ceros.
SRA: Realiza un shift a la derecha de los bits de op1, op2 lugares y almacena el
resultado en op3. Sólo considera los 5 bits menos significativos de op2 para determinar el valor del contador. Realiza expansión de signo, es decir, rellena con el bit más significativo de op1.

Instrucciones de memoria

LDSB: Carga en op2 el valor del byte almacenado en la dirección de memoria op1.
realiza expansión de signo.
LDSH: Carga en op2 el valor de la media palabra (2 bytes) almacenada a partir de
la dirección de memoria op1. Realiza expansión de signo.
LDUB: Carga en op2 el valor del byte almacenado en la dirección de memoria op1 .
no realiza expansión de signo. Rellena con ceros.

LDUH: Carga en op2 el valor de la media palabra (2 bytes) almacenada a partir de la dirección de memoria op1. No realiza expansión de signo. Rellena con
ceros.
LD: Carga en op2 el valor de la palabra (4 bytes) almacenada a partir de la
dirección de memoria op1.
STB: Guarda en el byte ubicado en la dirección de memoria op2 los 8 bits menos
significativos de op1.
STH: Guarda en la media palabra (2 bytes) ubicada a partir de la dirección de
memoria op2 los 16 bits menos significativos de op1.
ST: Guarda en la palabra (4 bytes) ubicada en la dirección de memoria op2 el
valor de op1.
SWAP: Intercambia los valores entre la palabra ( 4 bytes ) almacenada en la
dirección op1 en el registro op2 .
SETHI: Coloca en los 22 bits más significativos de op2 el valor op1.


Instrucciones de bifurcación incondicional

CALL: Coloca en el registro %15 el valor actual del PC (es decir de la instrucción
que contiene el CALL) y realiza un salto incondicional a la dirección
PC+4*desp30
JMPL: Coloca en el registro op2 el valor actual del PC (es decir de la instrucción
que contiene el JMPL) y realiza un salto incondicional a la dirección op1.
RETT: Es usada para retornar de un servicio a interrupción. Verifica que el retorno
sea válido y en caso de serlo transfiere el control a la dirección op1.


Instrucciones para manejo de ventanas

SAVE: Guarda la ventana del procedimiento llamador.
coloca en el registro op3 de la nueva ventana el valor op1 + op2 calculado
a partir de los valores de los registros de la ventana vieja.
RESTORE: Guarda la ventana del procedimiento llamador.
coloca en el registro op3 de la nueva ventana el valor op1 + op2
calculado a partir de los valores de los registros de la ventana vieja.






Instrucciones de bifurcación condicional

BA: Esta instrucción es en realidad un salto incondicional pero es equivalente en
formato a todas las demás que realizan saltos condicionales en el sentido de
realizar un salto a la dirección PC+4*op1 considerando el signo de op1.
BNE: En caso que la flag de Zero sea 0 realiza un salto a la dirección PC+4*op1
considerando el signo de op1.
BE: En caso que la flag de Zero sea 0 realiza un salto a la dirección PC+4*op1
considerando el signo de op1.
BG: Si la condición anterior se cumple entonces implica que en caso de haber sido
realizada una resta (una comparación) A-B de dos números A y B codificando
enteros en complemento a 2 entonces AB y AB entonces A > B y se
realiza un salto a la dirección PC+4*op1 considerando el signo de op1.
BLE: La condición es la negación del caso anterior ( ver BG) es decir que el salto
se realiza si A B considerando el signo.
BGE: La condición se cumple si N = V y por lo tanto es verdadera cuando A B
considerando el signo (ver BG) y en ese caso se realiza el salto.
BL: La condición es la negación del caso anterior (ver BGE)
se produce si A < B (ver BG) considerando el signo.
BGU: Si la condición anterior se cumple entonces implica que en caso de haber
sido realizada una resta (una comparación) C-D de dos números C y D
codificando enteros sin signo entonces C D y C D entonces C > D y se
realiza un salto a la dirección PC+4*op1 considerando el signo de op1.
BLEU: Es la negación de la condición anterior es decir que se realiza el salto si
C D (ver BGU) sin considerar el signo de C y D.
BCC: En caso que la flag de Carry sea 0 realiza un salto a la dirección PC+4*op1
considerando el signo de op1. Es equivalente a C D (ver BGU).
BCS: En caso que la flag de Carry sea 1 se realiza un salto a la dirección
PC+4*op1 considerando el signo de op1. Es equivalente a C < D (ver BGU).
BPOS: En caso que la flag Negative sea 0 realiza un salto a la dirección PC+4*op1
considerando el signo de op1.
BNEG: En caso que la flag Negative sea 1 realiza un salto a la dirección PC+4*op1
considerando el signo de op1.
BVC: En caso que la flag de Overflow sea 0 realiza un salto a la dirección
PC+4*op1 considerando el signo de op1.
BVS: En caso que la flag de Overflow sea 1 realiza un salto a la dirección
PC+4*op1 considerando el signo de op1.


Manejo especial del registro PSR(Program Satutus Register)

n Z v C
23 22 21 20

Los bits del 20 al 23 del PSR almacenan las banderas de la IU. Estos bits son
modificados por las instrucciones con cc (por ejemplo ANDcc) y por la instrucción WRPSR.

RDPSR: Copia el PSR a op1.
WRPSR: Coloca en PSR el valor op1 op2 1 2 Å .
RDWIM: Copia el WIM ( Window Invalid Mask ) a op1.
WRWIM: Coloca en WIM el valor op1 op2.
RDTBR: Copia el TBR ( Trap Base Register ) a op1.
WRTBR: Coloca en TBR el valor op1 op2.

0 comentarios: