blob: 6157d8d5c06e0d6d5bb2a280090e0a98feea7873 [file] [log] [blame]
# Try to verify all operand modes for 68HC12
sect .text
globl start
anda [12,x] ; Indexed indirect
ldaa #10
ldx L1
L1: ldy ,x
addd 1,y ; Offset from register
subd -1,y
eora 15,y
eora -16,y
eorb 16,y
eorb -17,y
oraa 128,sp
orab -128,sp
orab 255,x
orab -256,x
anda 256,x
andb -257,x
anda [12,x] ; Indexed indirect (16-bit offset)
ldaa [257,y]
ldab [32767,sp]
ldd [32768,pc]
ldd L1,pc
std a,x ; Two-reg index
ldx b,x
stx d,y
addd 1,+x ; Pre-Auto inc
addd 2,+x
addd 8,+x
addd 1,sp+ ; Post-Auto inc
addd 2,sp+
addd 8,sp+
subd 1,-y ; Pre-Auto dec
subd 2,-y
subd 8,-y
addd 1,y- ; Post-Auto dec
addd 2,y-
addd 8,y-
std [d,x] ; Indexed indirect with two reg index
std [d,y]
std [d,sp]
std [d,pc]
beq L1
lbeq start
lbcc L2
;; Move insn with various operands
movb start, 1,x
movw 1,x, start
movb start, 1,+x
movb start, 1,-x
movb #23, 1,-sp
movb L1, L2
movb L1, a,x
movw L1, b,x
movw L1, d,x
movw d,x, a,x
movw b,sp, d,pc
movw b,sp, L1
movw b,sp, 1,x
movw d,x, a,y
trap #0x30
trap #0x39
trap #0x40
trap #0x80
trap #255
movw 1,x,2,x
movw -1,-1
movw -1,1,x
movw #-1,1,x
movw 3,8
movw #3,3
movw #3,1,x
movw 3,1,x
movw 3,+2,x
movw 4,-2,x
;; Post-index byte with relocation
leas abort,x
leax t2-t1,y
leax toto,x
leas toto+titi,sp
leay titi,x
leas bb,y
leas min5b,pc
leas max5b,pc
leas min9b,pc
leas max9b,pc
;; Disassembler bug with movb
movb #23,0x2345
movb #40,12,sp
movb #39,3,+sp
movb #20,14,sp
movw #0x3210,0x3456
movw #0x4040,12,sp
movw #0x3900,3,+sp
movw #0x2000,14,sp
# movb #111,start
titi = 10
toto = 100
min5b= -15
max5b= 15
min9b= -255
max9b= 255
bb = 10240