357 lines
5.7 KiB
ArmAsm
357 lines
5.7 KiB
ArmAsm
.h8300s
|
|
.section .text
|
|
.align 2
|
|
.global _main
|
|
.global movb_tests
|
|
.global movw_tests
|
|
.global movl_tests
|
|
.global ldm_stm_tests
|
|
.global movfpe_movtpe_tests
|
|
.global add_sub_addx_subx_tests
|
|
.global inc_dec_adds_subs_tests
|
|
.global daa_das_tests
|
|
.global mul_div_tests
|
|
.global cmp_tests
|
|
.global neg_tests
|
|
.global ext_tests
|
|
.global tas_mac_tests
|
|
.global logic_operations_tests
|
|
.global sha_shl_tests
|
|
.global rot_rotx_tests
|
|
.global bset_bclr_tests
|
|
.global bnot_btst_tests
|
|
.global band_bor_bxor_tests
|
|
.global bld_bst_tests
|
|
.global branch_tests
|
|
.global system_control_tests
|
|
.global block_data_transfer_tests
|
|
_main:
|
|
nop
|
|
|
|
movb_tests:
|
|
mov.b r0l,r0h
|
|
mov.b #0x12,r1l
|
|
mov.b @er0,r1h
|
|
mov.b @(0x1234:16,er0),r2l
|
|
mov.b @(0x12345678:32,er0),r2h
|
|
mov.b @er0+,r3l
|
|
mov.b @0x12:8,r3h
|
|
mov.b @0x1234:16,r4l
|
|
mov.b @0x12345678:32,r4h
|
|
|
|
movw_tests:
|
|
mov.w e0,r0
|
|
mov.w #0x1234,r1
|
|
mov.w @er0,r2
|
|
mov.w @(0x1234:16,er0),r3
|
|
mov.w @(0x12345678:32,er0),r4
|
|
mov.w @er0+,r5
|
|
mov.w @0x1234:16,r6
|
|
mov.w @0x12345678:32,r7
|
|
|
|
movl_tests:
|
|
mov.l er0,er1
|
|
mov.l #0x12345678,er1
|
|
mov.l @er0,er2
|
|
mov.l @(0x1234:16,er0),er3
|
|
mov.l @(0x12345678:32,er0),er4
|
|
mov.l @er0+,er5
|
|
mov.l @0x1234:16,er6
|
|
mov.l @0x12345678:32,er7
|
|
|
|
ldm_stm_tests:
|
|
ldm.l @sp+,er0-er1
|
|
ldm.l @sp+,er0-er2
|
|
ldm.l @sp+,er0-er3
|
|
stm.l er0-er1,@-sp
|
|
stm.l er0-er2,@-sp
|
|
stm.l er0-er3,@-sp
|
|
|
|
movfpe_movtpe_tests:
|
|
movfpe @0x1234:16,r2l
|
|
movtpe r2l,@0x1234:16
|
|
|
|
add_sub_addx_subx_tests:
|
|
add.b #0x12,r0l
|
|
add.b r1l,r1h
|
|
add.w #0x1234,r2
|
|
add.w r3,r4
|
|
add.l #0x12345678,er5
|
|
add.l er6,er7
|
|
sub.b r1l,r1h
|
|
sub.w #0x1234,r2
|
|
sub.w r3,r4
|
|
sub.l #0x12345678,er5
|
|
sub.l er6,er7
|
|
addx #0x12,r0l
|
|
addx r1l,r1h
|
|
subx #0x12,r0l
|
|
subx r1l,r1h
|
|
|
|
inc_dec_adds_subs_tests:
|
|
inc.b r0l
|
|
inc.w #0x1,r4
|
|
inc.w #0x2,r3
|
|
inc.l #0x1,er2
|
|
inc.l #0x2,er1
|
|
dec.b r0l
|
|
dec.w #0x1,r4
|
|
dec.w #0x2,r3
|
|
dec.l #0x1,er2
|
|
dec.l #0x2,er1
|
|
adds #0x1,er7
|
|
adds #0x2,er6
|
|
adds #0x4,er5
|
|
subs #0x1,er7
|
|
subs #0x2,er6
|
|
subs #0x4,er5
|
|
|
|
daa_das_tests:
|
|
daa r0l
|
|
das r0h
|
|
|
|
mul_div_tests:
|
|
mulxs.b r0l,r1
|
|
mulxs.w r2,er3
|
|
mulxu.b r0l,e1
|
|
mulxu.w e2,er3
|
|
divxs.b r0l,r1
|
|
divxs.w r2,er3
|
|
divxu.b r0l,e1
|
|
divxu.w e2,er3
|
|
|
|
cmp_tests:
|
|
cmp.b #0x12,r0l
|
|
cmp.b r1l,r1h
|
|
cmp.w #0x1234,r2
|
|
cmp.w r3,e3
|
|
cmp.l #0x12345678,er4
|
|
cmp.l er5,er6
|
|
|
|
neg_tests:
|
|
neg.b r0l
|
|
neg.w r2
|
|
neg.l er3
|
|
|
|
ext_tests:
|
|
exts.w r0
|
|
exts.l er1
|
|
extu.w r2
|
|
extu.l er3
|
|
|
|
tas_mac_tests:
|
|
tas @er0
|
|
mac @er1+,@er2+
|
|
clrmac
|
|
ldmac er4,mach
|
|
ldmac er5,macl
|
|
stmac mach,er6
|
|
stmac macl,er7
|
|
|
|
logic_operations_tests:
|
|
and.b #0x12,r0l
|
|
and.b r1l,r2h
|
|
and.w #0x1234,r0
|
|
and.w r1,r2
|
|
and.l #0x12345678,er0
|
|
and.l er1,er2
|
|
or.b #0x12,r0l
|
|
or.b r1l,r2h
|
|
or.w #0x1234,r0
|
|
or.w r1,r2
|
|
or.l #0x12345678,er0
|
|
or.l er1,er2
|
|
xor.b #0x12,r0l
|
|
xor.b r1l,r2h
|
|
xor.w #0x1234,r0
|
|
xor.w r1,r2
|
|
xor.l #0x12345678,er0
|
|
xor.l er1,er2
|
|
not.b r0l
|
|
not.w r1
|
|
not.l er2
|
|
|
|
sha_shl_tests:
|
|
shal r0l
|
|
shal r1
|
|
shal er2
|
|
shar r3l
|
|
shar r4
|
|
shar er5
|
|
shll r0l
|
|
shll r1
|
|
shll er2
|
|
shlr r3l
|
|
shlr r4
|
|
shlr er5
|
|
|
|
rot_rotx_tests:
|
|
rotl r0l
|
|
rotl r1
|
|
rotl er2
|
|
rotr r3l
|
|
rotr r4
|
|
rotr er5
|
|
rotxl r0l
|
|
rotxl r1
|
|
rotxl er2
|
|
rotxr r3l
|
|
rotxr r4
|
|
rotxr er5
|
|
|
|
bset_bclr_tests:
|
|
bset #0x7,r0l
|
|
bset #0x6,@er1
|
|
bset #0x5,@0x12:8
|
|
bset #0x4,@0x1234:16
|
|
bset #0x3,@0x12345678:32
|
|
bset r7l,r0h
|
|
bset r6l,@er1
|
|
bset r5l,@0x12:8
|
|
bset r4l,@0x1234:16
|
|
bset r3l,@0x12345678:32
|
|
bclr #0x7,r0l
|
|
bclr #0x6,@er1
|
|
bclr #0x5,@0x12:8
|
|
bclr #0x4,@0x1234:16
|
|
bclr #0x3,@0x12345678:32
|
|
bclr r7h,r0h
|
|
bclr r6h,@er1
|
|
bclr r5h,@0x12:8
|
|
bclr r4h,@0x1234:16
|
|
bclr r3h,@0x12345678:32
|
|
|
|
bnot_btst_tests:
|
|
bnot #0x7,r0l
|
|
bnot #0x6,@er1
|
|
bnot #0x5,@0x12:8
|
|
bnot #0x4,@0x1234:16
|
|
bnot #0x3,@0x12345678:32
|
|
bnot r7l,r0h
|
|
bnot r6l,@er1
|
|
bnot r5l,@0x12:8
|
|
bnot r4l,@0x1234:16
|
|
bnot r3l,@0x12345678:32
|
|
btst #0x7,r0l
|
|
btst #0x6,@er1
|
|
btst #0x5,@0x12:8
|
|
btst #0x4,@0x1234:16
|
|
btst #0x3,@0x12345678:32
|
|
btst r7h,r0h
|
|
btst r6h,@er1
|
|
btst r5h,@0x12:8
|
|
btst r4h,@0x1234:16
|
|
btst r3h,@0x12345678:32
|
|
|
|
band_bor_bxor_tests:
|
|
band #0x7,r0l
|
|
band #0x6,@er1
|
|
band #0x5,@0x12:8
|
|
band #0x4,@0x1234:16
|
|
band #0x3,@0x12345678:32
|
|
bor #0x7,r0l
|
|
bor #0x6,@er1
|
|
bor #0x5,@0x12:8
|
|
bor #0x4,@0x1234:16
|
|
bor #0x3,@0x12345678:32
|
|
bxor #0x7,r0l
|
|
bxor #0x6,@er1
|
|
bxor #0x5,@0x12:8
|
|
bxor #0x4,@0x1234:16
|
|
bxor #0x3,@0x12345678:32
|
|
|
|
bld_bst_tests:
|
|
bld #0x7,r0l
|
|
bld #0x6,@er1
|
|
bld #0x5,@0x12:8
|
|
bld #0x4,@0x1234:16
|
|
bld #0x3,@0x12345678:32
|
|
bild #0x7,r0l
|
|
bild #0x6,@er1
|
|
bild #0x5,@0x12:8
|
|
bild #0x4,@0x1234:16
|
|
bild #0x3,@0x12345678:32
|
|
bst #0x7,r0l
|
|
bst #0x6,@er1
|
|
bst #0x5,@0x12:8
|
|
bst #0x4,@0x1234:16
|
|
bst #0x3,@0x12345678:32
|
|
bist #0x7,r0l
|
|
bist #0x6,@er1
|
|
bist #0x5,@0x12:8
|
|
bist #0x4,@0x1234:16
|
|
bist #0x3,@0x12345678:32
|
|
|
|
branch_tests:
|
|
bra branch_tests
|
|
brn branch_tests
|
|
bhi branch_tests
|
|
bls branch_tests
|
|
bcc branch_tests
|
|
bcs branch_tests
|
|
bne branch_tests
|
|
beq branch_tests
|
|
bvc branch_tests
|
|
bvs branch_tests
|
|
bpl branch_tests
|
|
bmi branch_tests
|
|
bge branch_tests
|
|
blt branch_tests
|
|
bgt branch_tests
|
|
ble branch_tests
|
|
jmp @er0
|
|
jmp @branch_tests
|
|
jmp @@0 (0)
|
|
bsr branch_tests:8
|
|
bsr branch_tests:16
|
|
jsr @er0
|
|
jsr @branch_tests
|
|
jsr @@0 (0)
|
|
rts
|
|
|
|
system_control_tests:
|
|
trapa #0x2
|
|
rte
|
|
sleep
|
|
ldc #0x12,ccr
|
|
ldc r3l,ccr
|
|
ldc @er0,ccr
|
|
ldc @(0x1234:16,er0),ccr
|
|
ldc @(0x12345678:32,er0),ccr
|
|
ldc @er1+,ccr
|
|
ldc @0x1234:16,ccr
|
|
ldc @0x12345678:32,ccr
|
|
stc ccr,r3l
|
|
stc ccr,@er0
|
|
stc ccr,@(0x1234:16,er0)
|
|
stc ccr,@(0x12345678:32,er0)
|
|
stc ccr,@-er1
|
|
stc ccr,@0x1234:16
|
|
stc ccr,@0x12345678:32
|
|
andc #0x12,ccr
|
|
orc #0x34,ccr
|
|
xorc #0x56,ccr
|
|
ldc #0x12,exr
|
|
ldc r3l,exr
|
|
ldc @er0,exr
|
|
ldc @(0x1234:16,er0),exr
|
|
ldc @(0x12345678:32,er0),exr
|
|
ldc @er1+,exr
|
|
ldc @0x1234:16,exr
|
|
ldc @0x12345678:32,exr
|
|
stc exr,r3l
|
|
stc exr,@er0
|
|
stc exr,@(0x1234:16,er0)
|
|
stc exr,@(0x12345678:32,er0)
|
|
stc exr,@-er1
|
|
stc exr,@0x1234:16
|
|
stc exr,@0x12345678:32
|
|
andc #0x12,exr
|
|
orc #0x34,exr
|
|
xorc #0x56,exr
|
|
nop
|
|
|
|
block_data_transfer_tests:
|
|
eepmov.b
|
|
eepmov.w
|