Propeller Manual

Table Of Contents
CMPS – Assembly Language Reference
CMPS
Instruction: Compare two signed values.
CMPS SValue1, # SValue2
Result: Optionally, equality and greater/lesser status is written to the Z and C flags.
SValue1 (d-field) is the register containing the value to compare with that of SValue2.
SValue2 (s-field) is a register or a 9-bit literal whose value is compared with SValue1.
Opcode Table:
–INSTR– ZCRI –CON– –DEST– –SRC– Z Result C Result Result Clocks
110000 000i 1111 ddddddddd sssssssss
D = S Signed (D < S) Not Written 4
Concise Truth Table:
In Out
Destination Source Z
C
Effects
Destination
1
Z C
$0000_0003; 3
$0000_0002; 2 -
-
wr wz wc
$0000_0001; 1 0 0
$0000_0003; 3
$0000_0003; 3 -
-
wr wz wc
$0000_0000; 0 1 0
$0000_0003; 3
$0000_0004; 4 -
-
wr wz wc
$FFFF_FFFF; -1 0 1
$8000_0000; -2,147,483,648
$7FFF_FFFF; 2,147,483,647
-
-
wr wz wc
$0000_0001; 1 0
1
2
$7FFF_FFFF; 2,147,483,647
$8000_0000; -2,147,483,648
-
-
wr wz wc
$FFFF_FFFF; -1 0
0
2
$8000_0000; -2,147,483,648
$0000_0001; 1 -
-
wr wz wc
$7FFF_FFFF; 2,147,483,647
3
0 1
$7FFF_FFFF; 2,147,483,647
$FFFF_FFFF; -1 -
-
wr wz wc
$8000_0000; -2,147,483,648
3
0 0
$FFFF_FFFE; -2
$FFFF_FFFF; -1 -
-
wr wz wc
$FFFF_FFFF; -1 0 1
$FFFF_FFFE; -2
$FFFF_FFFE; -2 -
-
wr wz wc
$0000_0000; 0 1 0
$FFFF_FFFE; -2
$FFFF_FFFD; -3 -
-
wr wz wc
$0000_0001; 1 0 0
1
Destination is not written unless the WR effect is given.
2
The C flag result of CMPS (Compare Signed) may differ from CMP (Compare Unsigned) where the “interpreted sign” of Source and
Destination are opposite. The first example in the second group, above, shows that CMPS sets C because signed $8000_0000
(-2,147,483,648) is
less than signed $7FFF_FFFF (2,147,483,647). CMP, however, would have cleared C because unsigned
$8000_0000 (2,147,483,648) is not
less than unsigned $7FFF_FFFF (2,147,483,647). The second example is the complementary
case where the Source and Destination values are switched.
3
The examples of the third group, above, demonstrate cases where the comparison is properly reflected in the flags but the
Destination Out has crossed the signed border (signed overflow error) in either the negative or positive direction. This signed
overflow condition can not be reflected in the flags. If this condition is important to an application, perform a CMPS without a WR
effect, note C’s status (signed borrow), then perform a SUBS and note C’s status (signed overflow).
Page 274 · Propeller Manual v1.1