blob: 7bbbdc88b67801f093feca6cc4679eae4ded7ddc [file] [log] [blame]
;;
;; This file verifies the 68HC12 indexed addressing modes
;; with a 5, 9 and 16-bit offset.
;;
.sect .text
.globl _main
_main:
nop
;;; Global check (1st)
ldab L1-_main,x ; Offset/const of these 2 insns must be
ldaa #L1-_main ; identical (likewise for 2nd global check)
;;; Test gas relax with difference of symbols (same section)
ldaa L2-L1,x ; -> ldaa 2,x (5-bit offset), text seg
adda L1-L2,y ; -> adda -2,y (5-bit offset), text seg
orab L7-L6,sp ; -> orab 8,sp (5-bit offset), text seg
anda L8-L7,sp ; -> anda 15,sp (5-bit offset), text seg
eora L7-L8,sp ; -> eora -15,sp (5-bit offset), text seg
eorb L7-L9,sp ; -> eorb -16,sp (5-bit offset), text seg
andb L9-L7,sp ; -> andb 16,sp (9-bit offset), text seg
staa L7-L10,x ; -> staa -17,x (9-bit offset), text seg
stab L11-L10,y ; -> stab 128,y (9-bit offset), text seg
stab L10-L11,y ; -> stab -128,y (9-bit offset), text seg
stab L11-L10+1,y ; -> stab 129,y (9-bit offset), text seg
stab L10-L11-1,y ; -> stab -129,y (9-bit offset), text seg
stab L11-1-L10,y ; -> stab 127,y (9-bit offset), text seg
stab L10-1-L11,y ; -> stab -129,y (9-bit offset), text seg
tst L12-L10,x ; -> tst 255,x (9-bit offset), text seg
tst L10-L12,x ; -> tst -255,x (9-bit offset), text seg
tst L12-L10+1,x ; -> tst 256,x (16-bit offset), text seg
mina L13-L10,x ; -> mina 256,x (16-bit offset)
mina L10-L13,x ; -> mina -256,x (9-bit offset)
maxa L14-L10,x ; -> maxa 257,x (16-bit offset)
maxa L10-L14,x ; -> maxa -257,x (16-bit offset)
;;; Test gas relax with difference of symbols (different section)
ldaa D2-D1,x ; -> ldaa 2,x (5-bit offset), data seg
adda D1-D2,y ; -> adda -2,y (5-bit offset), data seg
orab D7-D6,sp ; -> orab 8,sp (5-bit offset), data seg
anda D8-D7,sp ; -> anda 15,sp (5-bit offset), data seg
eora D7-D8,sp ; -> eora -15,sp (5-bit offset), data seg
eorb D7-D9,sp ; -> eorb -16,sp (5-bit offset), data seg
andb D9-D7,sp ; -> andb 16,sp (9-bit offset), data seg
staa D7-D10,x ; -> staa -17,x (9-bit offset), data seg
stab D11-D10,y ; -> stab 128,y (9-bit offset), data seg
stab D10-D11,y ; -> stab -128,y (9-bit offset), data seg
stab D11-D10+1,y ; -> stab 129,y (9-bit offset), data seg
stab D10-D11+1,y ; -> stab -127,y (9-bit offset), data seg
stab D11-1-D10,y ; -> stab 127,y (9-bit offset), data seg
stab D10-1-D11,y ; -> stab -129,y (9-bit offset), data seg
tst D12-D10,x ; -> tst 255,x (9-bit offset), data seg
tst D10-D12,x ; -> tst -255,x (9-bit offset), data seg
tst D12-D10+1,x ; -> tst 256,x (16-bit offset), data seg
mina D13-D10,x ; -> mina 256,x (16-bit offset)
mina D10-D13,x ; -> mina -256,x (9-bit offset)
maxa D14-D10,x ; -> maxa 257,x (16-bit offset)
maxa D10-D14,x ; -> maxa -257,x (16-bit offset)
;;; Global check (2nd)
ldab L1-_main,x
ldaa #L1-_main
;;; Indexed addressing with external symbol
ldab _external+128,x
bra L2
L1:
.dc.w 0xaabb
L2:
L6:
.ds.b 8, 0xa7
L7:
.ds.b 15, 0xa7
L8:
nop
L9:
nop
L10:
.skip 128
L11:
.skip 127
L12:
nop
L13:
nop
L14:
rts
.sect .data
D1:
.dc.w 0xaabb
D2:
D6:
.ds.b 8, 0xa7
D7:
.ds.b 15, 0xa7
D8:
nop
D9:
nop
D10:
.skip 128
D11:
.skip 127
D12:
nop
D13:
nop
D14: