CMPS
– Referencia del Lenguaje Ensamblador
CMPS
instrucción: Compara dos valores signados.
CMPS
SValue1,
SValue2
#
Resultado: Opcionalmente, igualdad y estado mayor/menor que se escribe en Z y C.
SValue1
(campo-d) es el registro que contiene el valor a comparar con SValue2.
SValue2
(campo-s) es el registro o literal 9-bit cuyo valor se compara con SValue1.
Tabla Opcode:
–INSTR– ZCRI –CON–
–DEST–
110000 000i 1111 ddddddddd sssssssss
Tabla de verdad:
Destino
$0000_0003; 3
$0000_0003; 3
$0000_0003; 3
$8000_0000; -2,147,483,648 $7FFF_FFFF; 2,147,483,647 - -
$7FFF_FFFF; 2,147,483,647 $8000_0000; -2,147,483,648 - -
$8000_0000; -2,147,483,648
$7FFF_FFFF; 2,147,483,647
$FFFF_FFFE; -2
$FFFF_FFFE; -2
$FFFF_FFFE; -2
El destino no se escribe a menos que se den efectos WR.
1
El resultado de la bandera C de CMPS (Compare signado) puede diferir de CMP (Compare no signado) donde el signo interpretado
2
de la fuente y destino son opuestos. El primer ejemplo en el segundo grupo, muestra que CMPS activa C porque el signado
$8000_0000 (-2,147,483,648) es menor que el signado $7FFF_FFFF (2,147,483,647). CMP, sin embargo, limpiara C debido a que el no
signado $8000_0000 (2,147,483,648) no es menor que el no signado$7FFF_FFFF (2,147,483,647). El segundo ejemplo es el caso
complementario donde la fuente y destino se intercambian.
El ejemplo del tercer grupo, arriba, demuestra casos donde la comparación se refleja apropiadamente en las banderas pero la
3
salida de destino cruzo la frontera del signo (error de sobre flujo de signo) en cualquiera de las direcciones negativo o positivo.
Esta condición de sobre flujo signado no puede reflejarse en las banderas. Si esta condición es importante en alguna aplicación,
desarrolle un CMPS sin efecto WR, observe el estado de C (signado borrow), luego desarrolle un SUBS y observe el estado de C
(signado overflow).
Pagina 280 · Manual Propeller v1.1
–SRC–
Resultado Z
D = S
Entrada
Fuente
Z C Efectos
$0000_0002; 2
- -
$0000_0003; 3
- -
$0000_0004; 4
- -
$0000_0001; 1
- -
$FFFF_FFFF; -1
- -
$FFFF_FFFF; -1
- -
$FFFF_FFFE; -2
- -
$FFFF_FFFD; -3
- -
Resultado C
Resultado
signado (D < S)
Not Written
Salida
Destino
1
wr wz wc
$0000_0001; 1
wr wz wc
$0000_0000; 0
wr wz wc
$FFFF_FFFF; -1
wr wz wc
$0000_0001; 1
wr wz wc
$FFFF_FFFF; -1
wr wz wc
$7FFF_FFFF; 2,147,483,647
wr wz wc
$8000_0000; -2,147,483,648
wr wz wc
$FFFF_FFFF; -1
wr wz wc
$0000_0000; 0
wr wz wc
$0000_0001; 1
Ciclos
4
Z C
0
0
1
0
0
1
2
0 1
2
0 0
3
0
1
3
0
0
0
1
1
0
0
0