47 lines
748 B
ArmAsm
47 lines
748 B
ArmAsm
|
# mach: all
|
||
|
# output:
|
||
|
# sim: --environment operating
|
||
|
|
||
|
.include "t-macros.i"
|
||
|
|
||
|
start
|
||
|
|
||
|
;; The d10v implements negated addition for subtraction
|
||
|
|
||
|
.macro check_sub s x y r c
|
||
|
;; clear carry
|
||
|
ldi r6,#0x8004
|
||
|
mvtc r6,cr0
|
||
|
;; subtract
|
||
|
ldi r10,#\x
|
||
|
ldi r11,#\y
|
||
|
sub r10, r11
|
||
|
;; verify result
|
||
|
ldi r12, #\r
|
||
|
cmpeq r10, r12
|
||
|
brf0t 1f
|
||
|
ldi r6, 1
|
||
|
ldi r2, #\s
|
||
|
trap 15
|
||
|
1:
|
||
|
;; verify carry
|
||
|
mvfc r6, cr0
|
||
|
and3 r6, r6, #1
|
||
|
cmpeqi r6, #\c
|
||
|
brf0t 1f
|
||
|
ldi r6, 1
|
||
|
ldi r2, #\s
|
||
|
trap 15
|
||
|
1:
|
||
|
.endm
|
||
|
|
||
|
check_sub 1 0x0000 0x0000 0x0000 1
|
||
|
check_sub 2 0x0000 0x0001 0xffff 0
|
||
|
check_sub 3 0x0001 0x0000 0x0001 1
|
||
|
check_sub 4 0x0001 0x0001 0x0000 1
|
||
|
check_sub 5 0x0000 0x8000 0x8000 0
|
||
|
check_sub 6 0x8000 0x0001 0x7fff 1
|
||
|
check_sub 7 0x7fff 0x7fff 0x0000 1
|
||
|
|
||
|
exit0
|