estructura de computadores - Arcos

Anuncio
Estructura de Computadores
Práctica de ensamblador II
Universidad Carlos III
Universidad Carlos III de Madrid
Grupo de Arquitectura de Computadores
ESTRUCTURA DE COMPUTADORES
Práctica de Programación en el ensamblador de MIPS II.
Guía del coprocesador:
Resumen de instrucciones en coma flotante del MIPS
Ingeniería en Informática
ii_ec@arcos.inf.uc3m.es
Curso 2008/2009
Resumen de instrucciones en coma flotante del MIPS
1
Estructura de Computadores
Práctica de ensamblador II
Universidad Carlos III
Indice
1. Resumen de instrucción en coma flotante del MIPS_____________________ 3
2. Instrucciones de carga y movimiento de datos en coma flotante _________ 3
3. Instrucciones aritméticas en coma flotante_____________________________ 5
4. Instrucciones de redondeo en coma flotante y cambio de representación 6
5. Instrucciones de comparación en coma flotante ________________________ 8
6. Instrucciones de bifurcación de coma flotante _________________________ 9
Resumen de instrucciones en coma flotante del MIPS
2
Estructura de Computadores
Práctica de ensamblador II
Universidad Carlos III
1. Resumen de instrucción en coma flotante del MIPS
El coprocesador 1 es una unidad de coma flotante. Para trabajar con dicha unidad
se hace necesario llevar y traer los datos del banco de registros general al banco
de registros de la unidad coma flotante.
Las instrucciones de simple precisión pueden utilizar cualquiera de los 32 registros
de simple precisión del coprocesador ($f0 a $f31). Las instrucciones de doble
precisión pueden utilizar cualquiera de los 16 registros de doble precisión del
coprocesador ($f0, $f2,..., $f30).
En cuanto a las instrucciones de transferencia en doble precisión entre el
coprocesador y el banco general de registros, éstas siempre usan el registro
especificado del banco general y el siguiente (por ejemplo, si se especifica $t0, se
usa el par de registros $t0,$t1).
Así estas instrucciones tienen dos versiones, según su sufijo:
•
•
.s : trabaja con números en coma flotante de simple precisión (floats).
.d : trabaja con números en coma flotante de doble precisión (doubles).
2. Instrucciones de carga y movimiento de datos en coma flotante
li.s rd, inm
Carga inmediato en simple precisión. Carga el valor inmediato inm en el registro rd.
li.d rd, inm
Carga inmediato en doble precisión. Carga el valor inmediato inm en el registro rd.
l.s rd, dir
Carga valor en simple precisión. Carga el valor almacenado en la posición de
memoria dir en el registro rd.
l.d rd, dir
Carga valor en doble precisión. Carga el valor almacenado en la posición de
memoria dir en el registro rd.
lwc1 rd, dir
Carga el valor almacenado a partir de la posición de memoria dir en el registro de
simple precisión del coprocesador rd.
ldc1 rd, dir
Resumen de instrucciones en coma flotante del MIPS
3
Estructura de Computadores
Práctica de ensamblador II
Universidad Carlos III
Carga el valor almacenado a partir de la posición de memoria dir en el registro de
64 bits rd.
mtc1 rd, ro
Mueve a coprocesador 1. Copia el valor del registro general rd en el registro de la
unidad de coma flotante ro.
mtc1.d rd, ro
Mueve double a coprocesador 1. Copia el valor del registro general rd en el
registro de la unidad de coma flotante ro.
s.s ro, dir
Almacena a partir de la dirección dir el valor que se encuentra en el registro ro.
s.d ro, dir
Almacena a partir de la dirección dir el valor que se encuentra en el registro ro. (de
64 bits)
swc1 ro, dir
Almacena a partir de la dirección dir el valor que se encuentra en el registro de 32
bits ro.
sdc1 ro, dir
Almacena a partir de la dirección dir el valor que se encuentra en el registro de 64
bits ro.
mfc1 rd, ro
Copia el valor del registro de la unidad de coma flotante ro de simple precisión en
el registro general rd.
mfc1.d rd
Copia el valor del registro de la unidad de coma flotante ro de doble precisión en el
registro general rd y el siguiente consecutivo.
mov.s rd, ro
Resumen de instrucciones en coma flotante del MIPS
4
Estructura de Computadores
Práctica de ensamblador II
Universidad Carlos III
Mueve valor en simple precisión. Copia el valor del registro ro en el registro rd.
Ambos registros son registros de la unidad de coma flotante.
mov.d rd, ro
Mueve valor en doble precisión. Copia el valor del registro ro en el registro rd.
Ambos registros son registros de la unidad de coma flotante
3. Instrucciones aritméticas en coma flotante
neg.s rd, ro
Niega valor en simple precisión
neg.d rd, ro
Niega valor en doble precisión
sqrt.s rd, ro
Raiz cuadrada de valor en simple precisión
sqrt.d rd, ro
Raiz cuadrada de valor en doble precisión
abs.s rd, ro
Valor absoluto en simple precisión
abs.d rd, ro
Valor absoluto en doble precisión
add.s rd, ro1, ro2
Suma valores en simple precisión. Pone en el registro rd la suma los valores de
los registros ro1 y ro2.
add.d rd, ro1, ro2
Suma valores en doble precisión. Pone en el registro rd la suma los valores de los
registros ro1 y ro2.
Resumen de instrucciones en coma flotante del MIPS
5
Estructura de Computadores
Práctica de ensamblador II
Universidad Carlos III
sub.s rd, ro1, ro2
Resta valores en simple precisión
sub.d rd, ro1, ro2
Resta valores en doble precisión
mul.s rd, ro1, ro2
Multiplica valores en simple precisión
mul.d rd, ro1, ro2
Multiplica valores en doble precisión
div.s rd, ro1, ro2
Divide valores en simple precisión
div.d rd, ro1, ro2
Divide valores en doble precisión
4. Instrucciones de redondeo en coma flotante y cambio de
representación
Las conversiones de valores en coma flotante permiten cambiar el formato de
representación entre simple precisión y doble precisión a coma fija (como la
representación de los registros de propósito general, complemento a dos). Es
decir permiten cambiar la representación en coma flotante a la representación
usada en los registros de propósito general. Además también se incluyen en esta
categoría las operaciones que permiten llevar a cabo los cuatro tipos de redondeo
definidos por el estándar IEEE 754.
Así dichas operaciones trabajan con registros $fn, pero cambian su representación
(de coma flotante a complemento a dos). Es decir para todas las instrucciones
tanto rd como ro son registros del coprocesador ($fn). Una vez realizadas las
conversiones de representación se puede realizar el movimiento de datos entro los
procesadores.
round.w.s rd, ro
Resumen de instrucciones en coma flotante del MIPS
6
Estructura de Computadores
Práctica de ensamblador II
Universidad Carlos III
Redondea valor en simple precisión a palabra en punto fijo. Redondea el valor del
registro ro hacia el entero más cercano y lo almacena en el registro rd (en
complemento a dos).
round.w.d rd, ro
Redeondea valor en doble precisión a palabra en punto fijo. Redondea el valor del
registro ro hacia el entero más cercano y lo almacena en el registro rd (en
complemento a dos).
ceil.w.s rd, ro
Redondea hacia arriba el valor en simple precisión a palabra en punto
fijojo
ceil.w.d rd, ro
Redondea hacia arriba valor en doble precisión a palabra en punto fijo
floor.w.s rd, ro
Redondea hacia abajo valor en simple precisión a palabra en punto fijo
floor.w.d rd, ro
Redondea hacia abajo valor en doble precisión a palabra en punto fijo.
trunc.w.s rd, ro
Trunca valor en simple precisión a palabra en punto fijo
trunc.w.d rd, ro
Trunca valor en doble precisión a palabra en punto fijo
Las siguientes instrucciones realizan la conversión del valor del registro ro y lo
almacena en el registro rd. Dichas instrucciones cambian la representación del
valor almacenado en rd y lo almacenan en r0.
cvt.w.s rd, ro
Convierte valor en simple precisión a palabra en punto fijo.
Resumen de instrucciones en coma flotante del MIPS
7
Estructura de Computadores
Práctica de ensamblador II
Universidad Carlos III
cvt.w.d rd, ro
Convierte valor en doble precisión a palabra en punto fijo.
cvt.s.w rd, ro
Convierte valor en punto fijo a simple precisión.
cvt.d.w rd, ro
Convierte valor en punto fijo a doble precisión.
cvt.s.d rd, ro
Convierte valor en doble precisión a simple precisión
cvt.d.s rd, ro
Convierte valor en simple precisión a doble precisión
5. Instrucciones de comparación en coma flotante
c.cond.s ro1, ro2
Comparación de valores en simple precisión
c.cond.d ro1, ro2
Comparación de valores en doble precisión
Compara los registro ro1 y ro2 de la unidad de coma flotante. Activa el biestable
de condición de la unidad de coma flotante si los valores de los registros cumplen
la condición. En caso de no cumplirse lo desactiva. El valor del biestable de
condición se puede consultar mediante las instrucciones bc1t, bc1tl, bc1f o bc1fl.
El valor cond puede tomar los siguientes valores:
f
un
eq
ueq
olt
ult
ole
ule
sf
Falso
Desordenado
Igual a
Desordenado o igual
Menor ordenado
Desordenado o menor
Menor o igual ordenado
Desordenado o menor o igual
Falso con señal
Resumen de instrucciones en coma flotante del MIPS
8
Estructura de Computadores
Práctica de ensamblador II
ngle
seq
ngl
lt
nge
le
ngt
Universidad Carlos III
Ni mayor ni igual ni menor
Igual con señal
Ni mayor ni menor
Menor
Ni mayor ni igual
Menor o igual
No mayor
6. Instrucciones de bifurcación de coma flotante
Es posible realizar una bifurcación basada en el valor del biestable de condición
de la unidad de coma flotante. Dicho biestable se modifica mediante las
instrucciones de comparación en coma flotante.
bc1t etiq
Bifurca si coma flotante cierto. Salta, si está activado (bc1t) o desactivado (bc1f) el
biestable de condición del coprocesador 1 (la unidad de coma flotante), a la
instrucción marcada con etiq.
bc1f etiq
Bifurca si coma flotante falso. Salta, si está activado (bc1t) o desactivado (bc1f) el
biestable de condición del coprocesador 1 (la unidad de coma flotante), a la
instrucción marcada con etiq.
Resumen de instrucciones en coma flotante del MIPS
9
Descargar