mirror of
https://github.com/rizinorg/rizin.git
synced 2026-10-11 22:19:51 +00:00
3449 lines
43 KiB
Plaintext
3449 lines
43 KiB
Plaintext
NAME=Testing the decryption in emulateme m68060
|
|
FILE=bins/elf/m68k/emulateme-m68060
|
|
TIMEOUT=30
|
|
REGEXP_FILTER_ERR=ERROR.*\n
|
|
CMDS=<<EOF
|
|
e io.cache=1
|
|
aaa
|
|
wx 00100000 @ 0x200080
|
|
wx 00200100 @ 0x200084
|
|
wx 416e79436f6c6f7572596f754c696b65 @ 0x200100
|
|
s sym.decrypt
|
|
aezi
|
|
aezv a7 0x200080
|
|
aezsu 0x100194
|
|
aezv d0
|
|
ps @ obj.seckrit
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a7 = 0x200080
|
|
d0: 0x00000001
|
|
Hello from RzIL!
|
|
EOF
|
|
EXPECT_ERR=
|
|
RUN
|
|
|
|
NAME=m68k aez MOVEM predecrement uses CPU-specific base value
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
wx 48e08080 @ 0
|
|
wx 48e14040 @ 0x40
|
|
e asm.cpu=68020
|
|
s 0
|
|
aezi
|
|
aezv a0 0x20
|
|
aezv d0 0x11223344
|
|
aezs
|
|
ar a0
|
|
pxwj 8 @ 0x18
|
|
e asm.cpu=68000
|
|
s 0x40
|
|
aezi
|
|
aezv a1 0x60
|
|
aezv d1 0x11223344
|
|
aezs
|
|
ar a1
|
|
pxwj 8 @ 0x58
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x20
|
|
d0 = 0x11223344
|
|
a0 = 0x00000018
|
|
[287454020,28]
|
|
a1 = 0x60
|
|
d1 = 0x11223344
|
|
a1 = 0x00000058
|
|
[287454020,96]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVE16 aligns transfers but increments raw address
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68040
|
|
wx f60800000001 @ 0x40
|
|
wx 000102030405060708090a0b0c0d0e0f @ 0
|
|
s 0x40
|
|
aezi
|
|
aezv a0 0x21
|
|
aezs
|
|
ar a0
|
|
pxj 16 @ 0x20
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x21
|
|
a0 = 0x00000031
|
|
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez RTE consumes format 2 frame and restores USP
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 4e73
|
|
wx 000000000020200000000000 @ 0x40
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv a7 0x40
|
|
aezv usp 0x80
|
|
aezs
|
|
ar sr
|
|
ar pc
|
|
ar a7
|
|
ar isp
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
a7 = 0x40
|
|
usp = 0x80
|
|
sr = 0x0000
|
|
pc = 0x00000020
|
|
a7 = 0x00000080
|
|
isp = 0x0000004c
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez privileged MOVE forms trap in user mode
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 4e60 @ 0
|
|
wx 40c0 @ 0x10
|
|
s 0
|
|
aezi
|
|
aezv sr 0
|
|
aezv a0 0x12345678
|
|
aezv usp 0xabcdef00
|
|
aezs
|
|
ar usp
|
|
s 0x10
|
|
aezi
|
|
aezv sr 0
|
|
aezv d0 0x12345678
|
|
aezs
|
|
ar d0
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x0
|
|
a0 = 0x12345678
|
|
usp = 0xabcdef00
|
|
usp = 0xabcdef00
|
|
sr = 0x0
|
|
d0 = 0x12345678
|
|
d0 = 0x12345678
|
|
sr = 0x0000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez special MOVE forms preserve condition codes
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 4e6040c0
|
|
aezi
|
|
aezv sr 0x201f
|
|
aezv a0 0x12345678
|
|
aezs 2
|
|
ar usp
|
|
ar d0
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x201f
|
|
a0 = 0x12345678
|
|
usp = 0x12345678
|
|
d0 = 0x0000201f
|
|
sr = 0x201f
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez RTE rejects MC68010 format on MC68040
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68040
|
|
wx 4e73
|
|
wx 2000 @ 0x40
|
|
wx 12345678 @ 0x42
|
|
wx 8000 @ 0x46
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv a7 0x40
|
|
aezs
|
|
ar a7
|
|
ar pc
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
a7 = 0x40
|
|
a7 = 0x00000040
|
|
pc = 0x00000002
|
|
sr = 0x2000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez zero-count shift and rotate flags
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx e028 @ 0
|
|
wx e030 @ 0x10
|
|
wx e038 @ 0x20
|
|
s 0
|
|
aezi
|
|
aezv d0 0
|
|
aezv sr 0x11
|
|
aezs
|
|
ar sr
|
|
s 0x10
|
|
aezi
|
|
aezv d0 0
|
|
aezv sr 0x10
|
|
aezs
|
|
ar sr
|
|
s 0x20
|
|
aezi
|
|
aezv d0 0
|
|
aezv sr 0x1
|
|
aezs
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x0
|
|
sr = 0x11
|
|
sr = 0x0014
|
|
d0 = 0x0
|
|
sr = 0x10
|
|
sr = 0x0015
|
|
d0 = 0x0
|
|
sr = 0x1
|
|
sr = 0x0004
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez CAS2 failure updates both compare registers
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 0cfc808090c1 @ 0
|
|
wx 1111 @ 0x40
|
|
wx 2222 @ 0x50
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv a1 0x50
|
|
aezv d0 0x9999
|
|
aezv d1 0x3333
|
|
aezv d2 0xaaaa
|
|
aezv d3 0xbbbb
|
|
aezs
|
|
ar d0
|
|
ar d1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x40
|
|
a1 = 0x50
|
|
d0 = 0x9999
|
|
d1 = 0x3333
|
|
d2 = 0xaaaa
|
|
d3 = 0xbbbb
|
|
d0 = 0x00001111
|
|
d1 = 0x00002222
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez CAS2 shared compare register keeps first memory operand
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 0cfc808090c0 @ 0
|
|
wx 1111 @ 0x40
|
|
wx 2222 @ 0x50
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv a1 0x50
|
|
aezv d0 0x1111
|
|
aezv d2 0xaaaa
|
|
aezv d3 0xbbbb
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x40
|
|
a1 = 0x50
|
|
d0 = 0x1111
|
|
d2 = 0xaaaa
|
|
d3 = 0xbbbb
|
|
d0 = 0x00001111
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez dbra taken
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
wx 51c8fffc
|
|
ar d0=0x00000002
|
|
aezi
|
|
aezs
|
|
ar d0
|
|
ar pc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x00000001
|
|
pc = 0xfffffffe
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez dbra fallthrough
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
wx 51c8fffc
|
|
ar d0=0x12340000
|
|
aezi
|
|
aezs
|
|
ar d0
|
|
ar pc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x1234ffff
|
|
pc = 0x00000004
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez bne taken
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
wx 6602 4e71 4e71
|
|
aezi
|
|
aezv sr 0x0
|
|
aezs
|
|
ar pc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x0
|
|
pc = 0x00000004
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez bne fallthrough
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
wx 6602 4e71 4e71
|
|
aezi
|
|
aezv sr 0x4
|
|
aezs
|
|
ar pc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x4
|
|
pc = 0x00000002
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez bsr and rts
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
wx 61ff00000010
|
|
ar a7=0x40
|
|
aezi
|
|
aezs
|
|
ar a7
|
|
pxw 4 @ 0x3c
|
|
ar pc
|
|
wx 4e75
|
|
s 0
|
|
ar a7=0x20
|
|
wx 00000012 @ 0x20
|
|
aezi
|
|
aezs
|
|
ar a7
|
|
ar pc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a7 = 0x0000003c
|
|
0x0000003c 0x00000006 ....
|
|
pc = 0x00000012
|
|
a7 = 0x00000024
|
|
pc = 0x00000012
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez cmp.b preserves destination
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
wx b010
|
|
ar d0=0x12
|
|
ar a0=0x20
|
|
wx 34 @ 0x20
|
|
aezi
|
|
aezs
|
|
ar d0
|
|
ar sr
|
|
ar pc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x00000012
|
|
sr = 0x0009
|
|
pc = 0x00000002
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez one-bit memory field writes one byte
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
REGEXP_FILTER_ERR=INFO.*\n
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx eed00001 @ 0
|
|
wx 0011223344556677 @ 0x40
|
|
aezi
|
|
aezv a0 0x40
|
|
aezsej
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x40
|
|
[{"type":"pc_write","old":"0x0","new":"0x4"},{"type":"mem_write","address":"0x40","old":"0x0","new":"0x80"},{"type":"var_write","name":"sr","old":"0x0","new":"0x4"}]
|
|
EOF
|
|
EXPECT_ERR=
|
|
RUN
|
|
|
|
NAME=m68k aez maximum memory field writes five bytes
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx eed001c0 @ 0
|
|
wx 0011223344556677 @ 0x40
|
|
aezi
|
|
aezv a0 0x40
|
|
aezsej
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x40
|
|
[{"type":"pc_write","old":"0x0","new":"0x4"},{"type":"mem_write","address":"0x40","old":"0x0","new":"0x1"},{"type":"mem_write","address":"0x41","old":"0x11","new":"0xff"},{"type":"mem_write","address":"0x42","old":"0x22","new":"0xff"},{"type":"mem_write","address":"0x43","old":"0x33","new":"0xff"},{"type":"mem_write","address":"0x44","old":"0x44","new":"0xfe"},{"type":"var_write","name":"sr","old":"0x0","new":"0x0"}]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez CMP2 follows M68000PRM Z and C
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 00d00000 @ 0
|
|
wx 0114 @ 0x40
|
|
s 0
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv d0 5
|
|
aezs
|
|
ar sr
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv d0 1
|
|
aezs
|
|
ar sr
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv d0 0
|
|
aezs
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x40
|
|
d0 = 0x5
|
|
sr = 0x0000
|
|
a0 = 0x40
|
|
d0 = 0x1
|
|
sr = 0x0004
|
|
a0 = 0x40
|
|
d0 = 0x0
|
|
sr = 0x0001
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez CHK2 sets C when out of bounds
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 00d00800 @ 0
|
|
wx 0114 @ 0x40
|
|
s 0
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv d0 5
|
|
aezs
|
|
ar pc
|
|
ar sr
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv d0 0
|
|
aezs
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x40
|
|
d0 = 0x5
|
|
pc = 0x00000004
|
|
sr = 0x0000
|
|
a0 = 0x40
|
|
d0 = 0x0
|
|
sr = 0x0001
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez CMP2.W uses word bounds
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 02d00000 @ 0
|
|
wx 00010014 @ 0x40
|
|
s 0
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv d0 5
|
|
aezs
|
|
ar sr
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv d0 1
|
|
aezs
|
|
ar sr
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv d0 0
|
|
aezs
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x40
|
|
d0 = 0x5
|
|
sr = 0x0000
|
|
a0 = 0x40
|
|
d0 = 0x1
|
|
sr = 0x0004
|
|
a0 = 0x40
|
|
d0 = 0x0
|
|
sr = 0x0001
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez CMP2.B displacement EA
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 00e800000020 @ 0
|
|
wx 0114 @ 0x40
|
|
s 0
|
|
aezi
|
|
aezv a0 0x20
|
|
aezv d0 5
|
|
aezs
|
|
ar sr
|
|
aezi
|
|
aezv a0 0x20
|
|
aezv d0 0
|
|
aezs
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x20
|
|
d0 = 0x5
|
|
sr = 0x0000
|
|
a0 = 0x20
|
|
d0 = 0x0
|
|
sr = 0x0001
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVES.B transfers in supervisor mode
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68010
|
|
wx 0e100000 @ 0
|
|
wx 5a @ 0x40
|
|
s 0
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv a0 0x40
|
|
aezv d0 0xffffff00
|
|
aezs
|
|
ar d0
|
|
ar pc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
a0 = 0x40
|
|
d0 = 0xffffff00
|
|
d0 = 0xffffff5a
|
|
pc = 0x00000004
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVES.B is privileged
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68010
|
|
wx 0e100000 @ 0
|
|
wx 5a @ 0x40
|
|
s 0
|
|
aezi
|
|
aezv sr 0
|
|
aezv a0 0x40
|
|
aezv d0 0
|
|
aezs
|
|
ar d0
|
|
ar pc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x0
|
|
a0 = 0x40
|
|
d0 = 0x0
|
|
d0 = 0x00000000
|
|
pc = 0x00000004
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVES.B to An sign-extends
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68010
|
|
wx 0e109000 @ 0
|
|
wx 9a @ 0x40
|
|
s 0
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv a0 0x40
|
|
aezv a1 0
|
|
aezs
|
|
ar a1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
a0 = 0x40
|
|
a1 = 0x0
|
|
a1 = 0xffffff9a
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVEC SFC to D0
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68010
|
|
wx 4e7a0000 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv sfc 5
|
|
aezv d0 0
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
sfc = 0x5
|
|
d0 = 0x0
|
|
d0 = 0x00000005
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVEC D0 to SFC keeps 3 bits
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68010
|
|
wx 4e7b0000 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv d0 0xffffffff
|
|
aezv sfc 0
|
|
aezs
|
|
ar sfc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
d0 = 0xffffffff
|
|
sfc = 0x0
|
|
sfc = 0x00000007
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVEC CACR is illegal on 68010
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68010
|
|
wx 4e7a1002 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv d1 0x11111111
|
|
aezs
|
|
ar d1
|
|
ar pc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
d1 = 0x11111111
|
|
d1 = 0x11111111
|
|
pc = 0x00000004
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MAC.W default S/U is signed integer
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0010000 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 2
|
|
aezv d1 3
|
|
aezv acc0 0
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x2
|
|
d1 = 0x3
|
|
acc0 = 0x0
|
|
macsr = 0x0
|
|
acc0 = 0x00000006
|
|
macsr = 0x00000000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MAC.W respects MACSR signed vs unsigned
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0010000 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 2
|
|
aezv d1 0x8000
|
|
aezv acc0 0
|
|
aezv accext01 0
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar macsr
|
|
aezi
|
|
aezv d0 2
|
|
aezv d1 0x8000
|
|
aezv acc0 0
|
|
aezv accext01 0
|
|
aezv macsr 0x40
|
|
aezs
|
|
ar acc0
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x2
|
|
d1 = 0x8000
|
|
acc0 = 0x0
|
|
accext01 = 0x0
|
|
macsr = 0x0
|
|
acc0 = 0xffff0000
|
|
macsr = 0x00000008
|
|
d0 = 0x2
|
|
d1 = 0x8000
|
|
acc0 = 0x0
|
|
accext01 = 0x0
|
|
macsr = 0x40
|
|
acc0 = 0x00010000
|
|
macsr = 0x00000040
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez PACK packs two BCD digits
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 81400000 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 0x0705
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
wx 81400001 @ 0
|
|
aezv d0 0x0705
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x705
|
|
d0 = 0x00000775
|
|
d0 = 0x705
|
|
d0 = 0x00000776
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez UNPK expands one BCD byte
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 81800000 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 0x75
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x75
|
|
d0 = 0x00000705
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MAC load uses MASK and a longword
|
|
FILE=malloc://512
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0100820 @ 0
|
|
wx 11223344 @ 0x100
|
|
s 0
|
|
aezi
|
|
aezv d0 1
|
|
aezv a0 0x140
|
|
aezv acc1 0
|
|
aezv macsr 0
|
|
aezv mask 0xffffff00
|
|
aezs
|
|
ar d0
|
|
ar acc1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x1
|
|
a0 = 0x140
|
|
acc1 = 0x0
|
|
macsr = 0x0
|
|
mask = 0xffffff00
|
|
d0 = 0x11223344
|
|
acc1 = 0x00000001
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez TBLU.W interpolates two table entries
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cpu32
|
|
wx f8013042 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d1 0x64
|
|
aezv d2 0xc8
|
|
aezv d3 0x80
|
|
aezs
|
|
ar d3
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d1 = 0x64
|
|
d2 = 0xc8
|
|
d3 = 0x80
|
|
d3 = 0x00000096
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez TBLUN.W returns the unrounded interpolated value
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cpu32
|
|
wx f8013442 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d1 0x64
|
|
aezv d2 0xc8
|
|
aezv d3 0x80
|
|
aezs
|
|
ar d3
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d1 = 0x64
|
|
d2 = 0xc8
|
|
d3 = 0x80
|
|
d3 = 0x00009600
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez non-EMAC MAC and MSAC preserve sticky V
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=coldfire
|
|
wx a0010000a0010000a0010100 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 1
|
|
aezv d1 1
|
|
aezv acc0 0x7fffffff
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar macsr
|
|
aezs
|
|
ar acc0
|
|
ar macsr
|
|
aezs
|
|
ar acc0
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x1
|
|
d1 = 0x1
|
|
acc0 = 0x7fffffff
|
|
macsr = 0x0
|
|
acc0 = 0x80000000
|
|
macsr = 0x0000000a
|
|
acc0 = 0x80000001
|
|
macsr = 0x0000000a
|
|
acc0 = 0x80000000
|
|
macsr = 0x0000000a
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez EMAC extension overflow sets only EV
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0010000 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 1
|
|
aezv d1 1
|
|
aezv acc0 0x7fffffff
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x1
|
|
d1 = 0x1
|
|
acc0 = 0x7fffffff
|
|
macsr = 0x0
|
|
acc0 = 0x80000000
|
|
accext01 = 0x00000000
|
|
macsr = 0x00000001
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez EMAC true accumulator overflow latches PAV
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0010000 @ 0
|
|
aezi
|
|
aezv d0 1
|
|
aezv d1 1
|
|
aezv acc0 0xffffffff
|
|
aezv accext01 0x7fff
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x1
|
|
d1 = 0x1
|
|
acc0 = 0xffffffff
|
|
accext01 = 0x7fff
|
|
macsr = 0x0
|
|
acc0 = 0x00000000
|
|
accext01 = 0x00008000
|
|
macsr = 0x0000010b
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez EMAC product overflow latches PAV independently
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0010800 @ 0
|
|
aezi
|
|
aezv d0 0x100000
|
|
aezv d1 0x100000
|
|
aezv acc0 0
|
|
aezv accext01 0
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x100000
|
|
d1 = 0x100000
|
|
acc0 = 0x0
|
|
accext01 = 0x0
|
|
macsr = 0x0
|
|
acc0 = 0x00000000
|
|
accext01 = 0x00000000
|
|
macsr = 0x00000106
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez EMAC fractional product uses the high 40 bits
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0010800 @ 0
|
|
aezi
|
|
aezv d0 0x40000000
|
|
aezv d1 0x40000000
|
|
aezv acc0 0
|
|
aezv accext01 0
|
|
aezv macsr 0x20
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x40000000
|
|
d1 = 0x40000000
|
|
acc0 = 0x0
|
|
accext01 = 0x0
|
|
macsr = 0x20
|
|
acc0 = 0x10000000
|
|
accext01 = 0x00000000
|
|
macsr = 0x00000020
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez EMAC fractional mode ignores the encoded scale factor
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0020600 @ 0
|
|
aezi
|
|
aezv d0 0x4000
|
|
aezv d2 0x4000
|
|
aezv acc0 0
|
|
aezv accext01 0
|
|
aezv macsr 0x20
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x4000
|
|
d2 = 0x4000
|
|
acc0 = 0x0
|
|
accext01 = 0x0
|
|
macsr = 0x20
|
|
acc0 = 0x10000000
|
|
accext01 = 0x00000000
|
|
macsr = 0x00000020
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVCLR copies the accumulator and clears it
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a1c0 @ 0
|
|
s 0
|
|
aezi
|
|
aezv acc0 0x11223344
|
|
aezv d0 0
|
|
aezs
|
|
ar d0
|
|
ar acc0
|
|
wx a1c8 @ 0
|
|
aezi
|
|
aezv acc0 0x55667788
|
|
aezv a0 0
|
|
aezs
|
|
ar a0
|
|
ar acc0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
acc0 = 0x11223344
|
|
d0 = 0x0
|
|
d0 = 0x11223344
|
|
acc0 = 0x00000000
|
|
acc0 = 0x55667788
|
|
a0 = 0x0
|
|
a0 = 0x55667788
|
|
acc0 = 0x00000000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVCLR clears PAVx and ACCext
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a1c0 @ 0
|
|
s 0
|
|
aezi
|
|
aezv acc0 0x11
|
|
aezv d0 0
|
|
aezv macsr 0x100
|
|
aezv accext01 0xaabbccdd
|
|
aezs
|
|
ar d0
|
|
ar acc0
|
|
ar macsr
|
|
ar accext01
|
|
EOF
|
|
EXPECT=<<EOF
|
|
acc0 = 0x11
|
|
d0 = 0x0
|
|
macsr = 0x100
|
|
accext01 = 0xaabbccdd
|
|
d0 = 0x00000011
|
|
acc0 = 0x00000000
|
|
macsr = 0x00000000
|
|
accext01 = 0xaabb0000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVCLR OMC uses 48-bit ACC including ACCext
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a1c0 @ 0
|
|
s 0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0x82
|
|
aezv accext01 0
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0x82
|
|
aezv accext01 1
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0x82
|
|
aezv accext01 0x8000
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x80000000
|
|
aezv d0 0
|
|
aezv macsr 0x82
|
|
aezv accext01 0xffff
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0xc2
|
|
aezv accext01 0
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0xc2
|
|
aezv accext01 1
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x82
|
|
accext01 = 0x0
|
|
d0 = 0x12345678
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x82
|
|
accext01 = 0x1
|
|
d0 = 0x7fffffff
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x82
|
|
accext01 = 0x8000
|
|
d0 = 0x80000000
|
|
acc0 = 0x80000000
|
|
d0 = 0x0
|
|
macsr = 0x82
|
|
accext01 = 0xffff
|
|
d0 = 0x80000000
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0xc2
|
|
accext01 = 0x0
|
|
d0 = 0x12345678
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0xc2
|
|
accext01 = 0x1
|
|
d0 = 0xffffffff
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVCLR fractional store truncates ACC[39:8]
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a1c0 @ 0
|
|
s 0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0x20
|
|
aezv accext01 0xab
|
|
aezs
|
|
ar d0
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x20
|
|
accext01 = 0xab
|
|
d0 = 0x12345678
|
|
acc0 = 0x00000000
|
|
accext01 = 0x00000000
|
|
macsr = 0x00000020
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVCLR fractional 32-bit round-to-nearest-even
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a1c0 @ 0
|
|
s 0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0x30
|
|
aezv accext01 0x80
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x12345679
|
|
aezv d0 0
|
|
aezv macsr 0x30
|
|
aezv accext01 0x80
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0x30
|
|
aezv accext01 0x81
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0x30
|
|
aezv accext01 0x7f
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x30
|
|
accext01 = 0x80
|
|
d0 = 0x12345678
|
|
acc0 = 0x12345679
|
|
d0 = 0x0
|
|
macsr = 0x30
|
|
accext01 = 0x80
|
|
d0 = 0x1234567a
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x30
|
|
accext01 = 0x81
|
|
d0 = 0x12345679
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x30
|
|
accext01 = 0x7f
|
|
d0 = 0x12345678
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVCLR fractional 16-bit round
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a1c0 @ 0
|
|
s 0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0x60
|
|
aezv accext01 0
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x1234c000
|
|
aezv d0 0
|
|
aezv macsr 0x60
|
|
aezv accext01 0
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x12348000
|
|
aezv d0 0
|
|
aezv macsr 0x60
|
|
aezv accext01 0
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x12358000
|
|
aezv d0 0
|
|
aezv macsr 0x60
|
|
aezv accext01 0
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x60
|
|
accext01 = 0x0
|
|
d0 = 0x00001234
|
|
acc0 = 0x1234c000
|
|
d0 = 0x0
|
|
macsr = 0x60
|
|
accext01 = 0x0
|
|
d0 = 0x00001235
|
|
acc0 = 0x12348000
|
|
d0 = 0x0
|
|
macsr = 0x60
|
|
accext01 = 0x0
|
|
d0 = 0x00001234
|
|
acc0 = 0x12358000
|
|
d0 = 0x0
|
|
macsr = 0x60
|
|
accext01 = 0x0
|
|
d0 = 0x00001236
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVCLR fractional OMC saturates 32-bit and 16-bit results
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a1c0 @ 0
|
|
s 0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0xa0
|
|
aezv accext01 0
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0xa0
|
|
aezv accext01 0x8000
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0x80000000
|
|
aezv d0 0
|
|
aezv macsr 0xa0
|
|
aezv accext01 0xff00
|
|
aezs
|
|
ar d0
|
|
aezi
|
|
aezv acc0 0
|
|
aezv d0 0
|
|
aezv macsr 0xe0
|
|
aezv accext01 0x8000
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0xa0
|
|
accext01 = 0x0
|
|
d0 = 0x12345678
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0xa0
|
|
accext01 = 0x8000
|
|
d0 = 0x80000000
|
|
acc0 = 0x80000000
|
|
d0 = 0x0
|
|
macsr = 0xa0
|
|
accext01 = 0xff00
|
|
d0 = 0x80000000
|
|
acc0 = 0x0
|
|
d0 = 0x0
|
|
macsr = 0xe0
|
|
accext01 = 0x8000
|
|
d0 = 0x00008000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVE from ACC uses the store path and does not clear
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a180 @ 0
|
|
s 0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0
|
|
aezv accext01 0
|
|
aezs
|
|
ar d0
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0x82
|
|
aezv accext01 1
|
|
aezs
|
|
ar d0
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv d0 0
|
|
aezv macsr 0x20
|
|
aezv accext01 0xab
|
|
aezs
|
|
ar d0
|
|
ar acc0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x0
|
|
accext01 = 0x0
|
|
d0 = 0x12345678
|
|
acc0 = 0x12345678
|
|
accext01 = 0x00000000
|
|
macsr = 0x00000000
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x82
|
|
accext01 = 0x1
|
|
d0 = 0x7fffffff
|
|
acc0 = 0x12345678
|
|
accext01 = 0x00000001
|
|
macsr = 0x00000082
|
|
acc0 = 0x12345678
|
|
d0 = 0x0
|
|
macsr = 0x20
|
|
accext01 = 0xab
|
|
d0 = 0x12345678
|
|
acc0 = 0x12345678
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVE ACC to ACC copies 48-bit ACC and PAV
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a310 @ 0
|
|
s 0
|
|
aezi
|
|
aezv acc0 0x12345678
|
|
aezv acc1 0
|
|
aezv accext01 0xabcd
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar acc1
|
|
ar accext01
|
|
ar macsr
|
|
aezi
|
|
aezv acc0 1
|
|
aezv acc1 0
|
|
aezv accext01 0
|
|
aezv macsr 0x100
|
|
aezs
|
|
ar acc1
|
|
ar macsr
|
|
aezi
|
|
aezv acc0 0
|
|
aezv acc1 0xffffffff
|
|
aezv accext01 0
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc1
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
acc0 = 0x12345678
|
|
acc1 = 0x0
|
|
accext01 = 0xabcd
|
|
macsr = 0x0
|
|
acc0 = 0x12345678
|
|
acc1 = 0x12345678
|
|
accext01 = 0xabcdabcd
|
|
macsr = 0x00000009
|
|
acc0 = 0x1
|
|
acc1 = 0x0
|
|
accext01 = 0x0
|
|
macsr = 0x100
|
|
acc1 = 0x00000001
|
|
macsr = 0x00000302
|
|
acc0 = 0x0
|
|
acc1 = 0xffffffff
|
|
accext01 = 0x0
|
|
macsr = 0x0
|
|
acc1 = 0x00000000
|
|
macsr = 0x00000004
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVE to ACC loads extension and clears PAV
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a100 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 0x80000000
|
|
aezv acc0 0
|
|
aezv accext01 0
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
aezi
|
|
aezv d0 0x12345678
|
|
aezv acc0 0
|
|
aezv accext01 0xffffffff
|
|
aezv macsr 0x40
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
aezi
|
|
aezv d0 0x80000000
|
|
aezv acc0 0
|
|
aezv accext01 0
|
|
aezv macsr 0x40
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
aezi
|
|
aezv d0 0x80000000
|
|
aezv acc0 0
|
|
aezv accext01 0
|
|
aezv macsr 0x20
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
aezi
|
|
aezv d0 0
|
|
aezv acc0 0xffffffff
|
|
aezv accext01 0
|
|
aezv macsr 0x100
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
wx a13c80000000 @ 0
|
|
s 0
|
|
aezi
|
|
aezv acc0 0
|
|
aezv accext01 0
|
|
aezv macsr 0x40
|
|
aezs
|
|
ar acc0
|
|
ar accext01
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x80000000
|
|
acc0 = 0x0
|
|
accext01 = 0x0
|
|
macsr = 0x0
|
|
acc0 = 0x80000000
|
|
accext01 = 0x0000ffff
|
|
macsr = 0x00000008
|
|
d0 = 0x12345678
|
|
acc0 = 0x0
|
|
accext01 = 0xffffffff
|
|
macsr = 0x40
|
|
acc0 = 0x12345678
|
|
accext01 = 0xffff0000
|
|
macsr = 0x00000040
|
|
d0 = 0x80000000
|
|
acc0 = 0x0
|
|
accext01 = 0x0
|
|
macsr = 0x40
|
|
acc0 = 0x80000000
|
|
accext01 = 0x00000000
|
|
macsr = 0x00000040
|
|
d0 = 0x80000000
|
|
acc0 = 0x0
|
|
accext01 = 0x0
|
|
macsr = 0x20
|
|
acc0 = 0x80000000
|
|
accext01 = 0x0000ff00
|
|
macsr = 0x00000028
|
|
d0 = 0x0
|
|
acc0 = 0xffffffff
|
|
accext01 = 0x0
|
|
macsr = 0x100
|
|
acc0 = 0x00000000
|
|
accext01 = 0x00000000
|
|
macsr = 0x00000004
|
|
acc0 = 0x0
|
|
accext01 = 0x0
|
|
macsr = 0x40
|
|
acc0 = 0x80000000
|
|
accext01 = 0x00000000
|
|
macsr = 0x00000040
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVE ACCext copies 32 bits without MACSR or CCR
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx ab00 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 0x80000000
|
|
aezv accext01 0
|
|
aezv macsr 0x40
|
|
aezv sr 0x2004
|
|
aezs
|
|
ar accext01
|
|
ar macsr
|
|
ar sr
|
|
aezi
|
|
aezv d0 0xaabbccdd
|
|
aezv accext01 0
|
|
aezv macsr 0x8
|
|
aezv sr 0x2000
|
|
aezs
|
|
ar accext01
|
|
ar macsr
|
|
ar sr
|
|
wx ab80 @ 0
|
|
s 0
|
|
aezi
|
|
aezv accext01 0x80000000
|
|
aezv d0 0
|
|
aezv macsr 0x40
|
|
aezv sr 0x2004
|
|
aezs
|
|
ar d0
|
|
ar macsr
|
|
ar sr
|
|
wx ab3c00000007 @ 0
|
|
s 0
|
|
aezi
|
|
aezv accext01 0xffffffff
|
|
aezv macsr 0x8
|
|
aezv sr 0x2008
|
|
aezs
|
|
ar accext01
|
|
ar macsr
|
|
ar sr
|
|
wx af00 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 0xaabbccdd
|
|
aezv accext23 0
|
|
aezv macsr 0
|
|
aezv sr 0x2000
|
|
aezs
|
|
ar accext23
|
|
ar macsr
|
|
ar sr
|
|
wx af80 @ 0
|
|
s 0
|
|
aezi
|
|
aezv accext23 0x11223344
|
|
aezv d0 0
|
|
aezv macsr 0x20
|
|
aezv sr 0x2000
|
|
aezs
|
|
ar d0
|
|
ar macsr
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x80000000
|
|
accext01 = 0x0
|
|
macsr = 0x40
|
|
sr = 0x2004
|
|
accext01 = 0x80000000
|
|
macsr = 0x00000040
|
|
sr = 0x2004
|
|
d0 = 0xaabbccdd
|
|
accext01 = 0x0
|
|
macsr = 0x8
|
|
sr = 0x2000
|
|
accext01 = 0xaabbccdd
|
|
macsr = 0x00000008
|
|
sr = 0x2000
|
|
accext01 = 0x80000000
|
|
d0 = 0x0
|
|
macsr = 0x40
|
|
sr = 0x2004
|
|
d0 = 0x80000000
|
|
macsr = 0x00000040
|
|
sr = 0x2004
|
|
accext01 = 0xffffffff
|
|
macsr = 0x8
|
|
sr = 0x2008
|
|
accext01 = 0x00000007
|
|
macsr = 0x00000008
|
|
sr = 0x2008
|
|
d0 = 0xaabbccdd
|
|
accext23 = 0x0
|
|
macsr = 0x0
|
|
sr = 0x2000
|
|
accext23 = 0xaabbccdd
|
|
macsr = 0x00000000
|
|
sr = 0x2000
|
|
accext23 = 0x11223344
|
|
d0 = 0x0
|
|
macsr = 0x20
|
|
sr = 0x2000
|
|
d0 = 0x11223344
|
|
macsr = 0x00000020
|
|
sr = 0x2000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVE MASK loads the low word and forces high FFFF
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx ad00 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 0x12345678
|
|
aezv mask 0
|
|
aezv macsr 0x40
|
|
aezv sr 0x2004
|
|
aezs
|
|
ar mask
|
|
ar macsr
|
|
ar sr
|
|
aezi
|
|
aezv d0 0x80000000
|
|
aezv mask 0
|
|
aezv macsr 0x40
|
|
aezv sr 0x2004
|
|
aezs
|
|
ar mask
|
|
ar macsr
|
|
ar sr
|
|
wx ad3c00000007 @ 0
|
|
s 0
|
|
aezi
|
|
aezv mask 0
|
|
aezv macsr 0x8
|
|
aezv sr 0x2008
|
|
aezs
|
|
ar mask
|
|
ar macsr
|
|
ar sr
|
|
wx ad80 @ 0
|
|
s 0
|
|
aezi
|
|
aezv mask 0x1234
|
|
aezv d0 0
|
|
aezv macsr 0x40
|
|
aezv sr 0x2004
|
|
aezs
|
|
ar d0
|
|
ar macsr
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x12345678
|
|
mask = 0x0
|
|
macsr = 0x40
|
|
sr = 0x2004
|
|
mask = 0xffff5678
|
|
macsr = 0x00000040
|
|
sr = 0x2004
|
|
d0 = 0x80000000
|
|
mask = 0x0
|
|
macsr = 0x40
|
|
sr = 0x2004
|
|
mask = 0xffff0000
|
|
macsr = 0x00000040
|
|
sr = 0x2004
|
|
mask = 0x0
|
|
macsr = 0x8
|
|
sr = 0x2008
|
|
mask = 0xffff0007
|
|
macsr = 0x00000008
|
|
sr = 0x2008
|
|
mask = 0x1234
|
|
d0 = 0x0
|
|
macsr = 0x40
|
|
sr = 0x2004
|
|
d0 = 0xffff1234
|
|
macsr = 0x00000040
|
|
sr = 0x2004
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVE MACSR keeps implemented bits and does not change CCR
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a980 @ 0
|
|
s 0
|
|
aezi
|
|
aezv macsr 0x12345678
|
|
aezv d0 0
|
|
aezv sr 0x2004
|
|
aezs
|
|
ar d0
|
|
ar macsr
|
|
ar sr
|
|
wx a900 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 0xffffffff
|
|
aezv macsr 0
|
|
aezv sr 0x2004
|
|
aezs
|
|
ar macsr
|
|
ar sr
|
|
wx a93c00000007 @ 0
|
|
s 0
|
|
aezi
|
|
aezv macsr 0xfff
|
|
aezv sr 0x2008
|
|
aezs
|
|
ar macsr
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
macsr = 0x12345678
|
|
d0 = 0x0
|
|
sr = 0x2004
|
|
d0 = 0x00000678
|
|
macsr = 0x12345678
|
|
sr = 0x2004
|
|
d0 = 0xffffffff
|
|
macsr = 0x0
|
|
sr = 0x2004
|
|
macsr = 0x00000fff
|
|
sr = 0x2004
|
|
macsr = 0xfff
|
|
sr = 0x2008
|
|
macsr = 0x00000007
|
|
sr = 0x2008
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVE MACSR on original MAC clears Rx[31:8]
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=coldfire
|
|
wx a980 @ 0
|
|
s 0
|
|
aezi
|
|
aezv macsr 0x12345678
|
|
aezv d0 0
|
|
aezv sr 0x2004
|
|
aezs
|
|
ar d0
|
|
ar macsr
|
|
ar sr
|
|
wx a900 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 0xffffffff
|
|
aezv macsr 0
|
|
aezv sr 0x2004
|
|
aezs
|
|
ar macsr
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
macsr = 0x12345678
|
|
d0 = 0x0
|
|
sr = 0x2004
|
|
d0 = 0x00000078
|
|
macsr = 0x12345678
|
|
sr = 0x2004
|
|
d0 = 0xffffffff
|
|
macsr = 0x0
|
|
sr = 0x2004
|
|
macsr = 0x000000ff
|
|
sr = 0x2004
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVE MACSR to CCR maps N Z V and EMAC EV
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a9c0 @ 0
|
|
s 0
|
|
aezi
|
|
aezv macsr 0x8
|
|
aezv sr 0x2000
|
|
aezs
|
|
ar sr
|
|
ar macsr
|
|
aezi
|
|
aezv macsr 0x1
|
|
aezv sr 0x2000
|
|
aezs
|
|
ar sr
|
|
aezi
|
|
aezv macsr 0x10
|
|
aezv sr 0x2010
|
|
aezs
|
|
ar sr
|
|
e asm.cpu=coldfire
|
|
wx a9c0 @ 0
|
|
s 0
|
|
aezi
|
|
aezv macsr 0x1
|
|
aezv sr 0x2000
|
|
aezs
|
|
ar sr
|
|
aezi
|
|
aezv macsr 0x8
|
|
aezv sr 0x2000
|
|
aezs
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
macsr = 0x8
|
|
sr = 0x2000
|
|
sr = 0x2008
|
|
macsr = 0x00000008
|
|
macsr = 0x1
|
|
sr = 0x2000
|
|
sr = 0x2001
|
|
macsr = 0x10
|
|
sr = 0x2010
|
|
sr = 0x2000
|
|
macsr = 0x1
|
|
sr = 0x2000
|
|
sr = 0x2000
|
|
macsr = 0x8
|
|
sr = 0x2000
|
|
sr = 0x2008
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MAAAC adds the product to both accumulators
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv5
|
|
wx a0010005 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 2
|
|
aezv d1 3
|
|
aezv acc0 10
|
|
aezv acc1 20
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar acc1
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x2
|
|
d1 = 0x3
|
|
acc0 = 0xa
|
|
acc1 = 0x14
|
|
macsr = 0x0
|
|
acc0 = 0x00000010
|
|
acc1 = 0x0000001a
|
|
macsr = 0x00000000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MASAC adds to ACCx and subtracts from ACCw
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv5
|
|
wx a0020007 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 2
|
|
aezv d2 3
|
|
aezv acc0 10
|
|
aezv acc1 20
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar acc1
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x2
|
|
d2 = 0x3
|
|
acc0 = 0xa
|
|
acc1 = 0x14
|
|
macsr = 0x0
|
|
acc0 = 0x00000010
|
|
acc1 = 0x0000000e
|
|
macsr = 0x00000000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MSAAC subtracts from ACCx and adds to ACCw
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv5
|
|
wx a6020905 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d2 2
|
|
aezv d3 3
|
|
aezv acc0 10
|
|
aezv acc1 20
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar acc1
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d2 = 0x2
|
|
d3 = 0x3
|
|
acc0 = 0xa
|
|
acc1 = 0x14
|
|
macsr = 0x0
|
|
acc0 = 0x00000004
|
|
acc1 = 0x0000001a
|
|
macsr = 0x00000000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez dual-acc flags follow the secondary accumulator
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv5
|
|
wx a0010005 @ 0
|
|
s 0
|
|
aezi
|
|
aezv d0 1
|
|
aezv d1 1
|
|
aezv acc0 0x7fffffff
|
|
aezv acc1 0
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar acc1
|
|
ar macsr
|
|
aezi
|
|
aezv d0 1
|
|
aezv d1 1
|
|
aezv acc0 0
|
|
aezv acc1 0x7fffffff
|
|
aezv macsr 0
|
|
aezs
|
|
ar acc0
|
|
ar acc1
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x1
|
|
d1 = 0x1
|
|
acc0 = 0x7fffffff
|
|
acc1 = 0x0
|
|
macsr = 0x0
|
|
acc0 = 0x80000000
|
|
acc1 = 0x00000001
|
|
macsr = 0x00000000
|
|
d0 = 0x1
|
|
d1 = 0x1
|
|
acc0 = 0x0
|
|
acc1 = 0x7fffffff
|
|
macsr = 0x0
|
|
acc0 = 0x00000001
|
|
acc1 = 0x80000000
|
|
macsr = 0x00000001
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez ColdFire RTE uses the ColdFire frame layout and restores alignment
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv2
|
|
wx 4e73 @ 0
|
|
wx 5000200000000020 @ 0x40
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv cacr 0
|
|
aezv a7 0x40
|
|
aezs
|
|
ar sr
|
|
ar pc
|
|
ar a7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
cacr = 0x0
|
|
a7 = 0x40
|
|
sr = 0x2000
|
|
pc = 0x00000020
|
|
a7 = 0x00000049
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez ColdFire SR write keeps shared A7 when EUSP is disabled
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv2
|
|
wx 46c0 @ 0
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv cacr 0
|
|
aezv a7 0x40
|
|
aezv usp 0x80
|
|
aezv isp 0x90
|
|
aezv d0 0
|
|
aezs
|
|
ar sr
|
|
ar a7
|
|
ar usp
|
|
ar isp
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
cacr = 0x0
|
|
a7 = 0x40
|
|
usp = 0x80
|
|
isp = 0x90
|
|
d0 = 0x0
|
|
sr = 0x0000
|
|
a7 = 0x00000040
|
|
usp = 0x00000080
|
|
isp = 0x00000090
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez ColdFire MOVEC switches stacks when enabling EUSP
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv2
|
|
wx 4e7b0002 @ 0
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv cacr 0
|
|
aezv a7 0x40
|
|
aezv usp 0x70
|
|
aezv isp 0x80
|
|
aezv d0 0x10
|
|
aezs
|
|
ar cacr
|
|
ar a7
|
|
ar usp
|
|
ar isp
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
cacr = 0x0
|
|
a7 = 0x40
|
|
usp = 0x70
|
|
isp = 0x80
|
|
d0 = 0x10
|
|
cacr = 0x00000010
|
|
a7 = 0x00000080
|
|
usp = 0x00000040
|
|
isp = 0x00000080
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez RTE follows a format 1 frame onto the restored stack
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68040
|
|
wx 4e73 @ 0
|
|
wx 3000000000101000 @ 0x40
|
|
wx 0000000000200000 @ 0x80
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv a7 0x40
|
|
aezv isp 0
|
|
aezv msp 0x80
|
|
aezv usp 0xa0
|
|
aezs
|
|
ar sr
|
|
ar pc
|
|
ar a7
|
|
ar isp
|
|
ar msp
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
a7 = 0x40
|
|
isp = 0x0
|
|
msp = 0x80
|
|
usp = 0xa0
|
|
sr = 0x0000
|
|
pc = 0x00000020
|
|
a7 = 0x000000a0
|
|
isp = 0x00000048
|
|
msp = 0x00000088
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez full-format PC memory indirect honors base suppression
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68040
|
|
wx 203b01e10040 @ 0
|
|
wx 00000080 @ 0x40
|
|
wx 11223344 @ 0x80
|
|
aezi
|
|
aezv d0 0
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x0
|
|
d0 = 0x11223344
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez UNLK A7 increments the popped stack pointer
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68040
|
|
wx 4e5f @ 0
|
|
wx 12345678 @ 0x40
|
|
aezi
|
|
aezv a7 0x40
|
|
aezs
|
|
ar a7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a7 = 0x40
|
|
a7 = 0x1234567c
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez ColdFire long multiply always clears overflow
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv2
|
|
wx 4c001000 @ 0
|
|
aezi
|
|
aezv d0 4
|
|
aezv d1 0x40000000
|
|
aezv sr 0x201f
|
|
aezs
|
|
ar d1
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x4
|
|
d1 = 0x40000000
|
|
sr = 0x201f
|
|
d1 = 0x00000000
|
|
sr = 0x2014
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez classic long DIV decodes size and register fields
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68040
|
|
wx 4c402001 @ 0
|
|
wx 4c401401 @ 0x10
|
|
aezi
|
|
aezv d0 3
|
|
aezv d1 0xdeadbeef
|
|
aezv d2 10
|
|
aezs
|
|
ar d1
|
|
ar d2
|
|
s 0x10
|
|
aezi
|
|
aezv d0 0x10000000
|
|
aezv d1 1
|
|
aezs
|
|
ar d1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x3
|
|
d1 = 0xdeadbeef
|
|
d2 = 0xa
|
|
d1 = 0x00000001
|
|
d2 = 0x00000003
|
|
d0 = 0x10000000
|
|
d1 = 0x1
|
|
d1 = 0x00000010
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVE from CCR zero extends the low SR byte
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68040
|
|
wx 42c0 @ 0
|
|
aezi
|
|
aezv d0 0xffff0000
|
|
aezv sr 0x271f
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0xffff0000
|
|
sr = 0x271f
|
|
d0 = 0xffff001f
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez ColdFire REMU reports signed-range quotient overflow
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv2
|
|
wx 4c401002 @ 0
|
|
aezi
|
|
aezv d0 1
|
|
aezv d1 0xffffffff
|
|
aezv d2 0xdeadbeef
|
|
aezv sr 0x1f
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x1
|
|
d1 = 0xffffffff
|
|
d2 = 0xdeadbeef
|
|
sr = 0x1f
|
|
d2 = 0xdeadbeef
|
|
sr = 0x0012
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez ColdFire byte A7 modes use one-byte deltas
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv2
|
|
wx 101f @ 0
|
|
wx 1027 @ 0x10
|
|
wx 7f @ 0x40
|
|
s 0
|
|
aezi
|
|
aezv a7 0x40
|
|
aezv d0 0
|
|
aezs
|
|
ar a7
|
|
s 0x10
|
|
aezi
|
|
aezv a7 0x41
|
|
aezv d0 0
|
|
aezs
|
|
ar a7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a7 = 0x40
|
|
d0 = 0x0
|
|
a7 = 0x00000041
|
|
a7 = 0x41
|
|
d0 = 0x0
|
|
a7 = 0x00000040
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez DIVS.W packs a 16-bit quotient without overwriting the remainder
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68000
|
|
wx 81fcfffe83fc000285fcfffe87fcfffe @ 0
|
|
aezi
|
|
aezv sr 0x10
|
|
aezv d0 7
|
|
aezv d1 0xfffffff9
|
|
aezv d2 0
|
|
aezv d3 0x10000
|
|
aezs
|
|
ar d0
|
|
ar sr
|
|
aezs
|
|
ar d1
|
|
ar sr
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
aezs
|
|
ar d3
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x10
|
|
d0 = 0x7
|
|
d1 = 0xfffffff9
|
|
d2 = 0x0
|
|
d3 = 0x10000
|
|
d0 = 0x0001fffd
|
|
sr = 0x0018
|
|
d1 = 0xfffffffd
|
|
sr = 0x0018
|
|
d2 = 0x00000000
|
|
sr = 0x0014
|
|
d3 = 0x00008000
|
|
sr = 0x0018
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVEC aliases active ISP and preserves inactive MSP
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 4e7a08044e7b18042f024e7a38044e7b480346c54e7a68044e7a7803 @ 0
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv a7 0x40
|
|
aezv isp 0x10
|
|
aezv msp 0x20
|
|
aezv d1 0x80
|
|
aezv d2 0x12345678
|
|
aezv d4 0xc0
|
|
aezv d5 0x3000
|
|
aezs
|
|
ar d0
|
|
aezs
|
|
ar a7
|
|
aezs
|
|
ar a7
|
|
pxw 4 @ 0x7c
|
|
aezs
|
|
ar d3
|
|
aezs
|
|
ar a7
|
|
ar msp
|
|
aezs
|
|
ar a7
|
|
aezs
|
|
ar d6
|
|
aezs
|
|
ar d7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
a7 = 0x40
|
|
isp = 0x10
|
|
msp = 0x20
|
|
d1 = 0x80
|
|
d2 = 0x12345678
|
|
d4 = 0xc0
|
|
d5 = 0x3000
|
|
d0 = 0x00000040
|
|
a7 = 0x00000080
|
|
a7 = 0x0000007c
|
|
0x0000007c 0x12345678 .4Vx
|
|
d3 = 0x0000007c
|
|
a7 = 0x0000007c
|
|
msp = 0x000000c0
|
|
a7 = 0x000000c0
|
|
d6 = 0x0000007c
|
|
d7 = 0x000000c0
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MOVEC aliases active MSP and preserves inactive ISP
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68040
|
|
wx 4e7a08034e7b18032f024e7a38034e7b480446c54e7a68034e7a7804 @ 0
|
|
aezi
|
|
aezv sr 0x3000
|
|
aezv a7 0x40
|
|
aezv msp 0x10
|
|
aezv isp 0x20
|
|
aezv d1 0x80
|
|
aezv d2 0x12345678
|
|
aezv d4 0xc0
|
|
aezv d5 0x2000
|
|
aezs
|
|
ar d0
|
|
aezs
|
|
ar a7
|
|
aezs
|
|
ar a7
|
|
pxw 4 @ 0x7c
|
|
aezs
|
|
ar d3
|
|
aezs
|
|
ar a7
|
|
ar isp
|
|
aezs
|
|
ar a7
|
|
aezs
|
|
ar d6
|
|
aezs
|
|
ar d7
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x3000
|
|
a7 = 0x40
|
|
msp = 0x10
|
|
isp = 0x20
|
|
d1 = 0x80
|
|
d2 = 0x12345678
|
|
d4 = 0xc0
|
|
d5 = 0x2000
|
|
d0 = 0x00000040
|
|
a7 = 0x00000080
|
|
a7 = 0x0000007c
|
|
0x0000007c 0x12345678 .4Vx
|
|
d3 = 0x0000007c
|
|
a7 = 0x0000007c
|
|
isp = 0x000000c0
|
|
a7 = 0x000000c0
|
|
d6 = 0x0000007c
|
|
d7 = 0x000000c0
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MAC and MSAC loads honor Mask without masking address writeback
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0100000a0100020a0180100a0200120 @ 0
|
|
wx 1122334455667788 @ 0x40
|
|
aezi
|
|
aezv a0 0x44
|
|
aezv d0 1
|
|
aezv mask 0xfffffff0
|
|
aezs
|
|
ar d0
|
|
aezs
|
|
ar d0
|
|
aezs
|
|
ar d0
|
|
ar a0
|
|
aezs
|
|
ar d0
|
|
ar a0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x44
|
|
d0 = 0x1
|
|
mask = 0xfffffff0
|
|
d0 = 0x55667788
|
|
d0 = 0x11223344
|
|
d0 = 0x55667788
|
|
a0 = 0x00000048
|
|
d0 = 0x11223344
|
|
a0 = 0x00000044
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez EMAC does not preserve V without accumulator overflow or PAV
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0010000 @ 0
|
|
aezi
|
|
aezv d0 1
|
|
aezv d1 1
|
|
aezv acc0 0
|
|
aezv macsr 2
|
|
aezs
|
|
ar acc0
|
|
ar macsr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x1
|
|
d1 = 0x1
|
|
acc0 = 0x0
|
|
macsr = 0x2
|
|
acc0 = 0x00000001
|
|
macsr = 0x00000000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez MAC and MSAC postincrement wins over an aliased load destination
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cfv4e
|
|
wx a0580000a0580120 @ 0
|
|
wx 0000010000000200 @ 0x40
|
|
aezi
|
|
aezv a0 0x40
|
|
aezv d0 1
|
|
aezv mask 0xfffffff0
|
|
aezs
|
|
ar a0
|
|
ar acc1
|
|
aezs
|
|
ar a0
|
|
ar acc1
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a0 = 0x40
|
|
d0 = 0x1
|
|
mask = 0xfffffff0
|
|
a0 = 0x00000044
|
|
acc1 = 0x00000001
|
|
a0 = 0x00000048
|
|
acc1 = 0x00000000
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez long MUL and DIV PC-relative bases skip instruction extensions
|
|
FILE=malloc://4096
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 4c3a000000000002 @ 0
|
|
wx 4c7a000000000002 @ 0x10
|
|
wx 4c3b10001000 @ 0x20
|
|
wx 00000003 @ 0x28
|
|
wx 4c3a08000800 @ 0x40
|
|
wx fffffffe @ 0x844
|
|
aezi
|
|
aezv d0 3
|
|
aezs
|
|
ar d0
|
|
s 0x10
|
|
aezi
|
|
aezv d0 6
|
|
aezs
|
|
ar d0
|
|
s 0x20
|
|
aezi
|
|
aezv d1 4
|
|
aezs
|
|
ar d1
|
|
s 0x40
|
|
aezi
|
|
aezv d0 3
|
|
aezs
|
|
ar d0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
d0 = 0x3
|
|
d0 = 0x00000006
|
|
d0 = 0x6
|
|
d0 = 0x00000003
|
|
d1 = 0x4
|
|
d1 = 0x0000000c
|
|
d0 = 0x3
|
|
d0 = 0xfffffffa
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez PACK and UNPK use separate A7 byte accesses
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68020
|
|
wx 834f0000 @ 0
|
|
wx 8f890000 @ 0x10
|
|
wx 07aa05bb @ 0x3c
|
|
wx aaaaaaaa @ 0x8c
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv a7 0x40
|
|
aezv a1 0x80
|
|
aezs
|
|
ar a7
|
|
ar a1
|
|
p8 1 @ 0x7f
|
|
ar sr
|
|
s 0x10
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv a1 0x80
|
|
aezv a7 0x90
|
|
aezs
|
|
ar a7
|
|
ar a1
|
|
p8 4 @ 0x8c
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x1f
|
|
a7 = 0x40
|
|
a1 = 0x80
|
|
a7 = 0x0000003c
|
|
a1 = 0x0000007f
|
|
75
|
|
sr = 0x001f
|
|
sr = 0x1f
|
|
a1 = 0x80
|
|
a7 = 0x90
|
|
a7 = 0x0000008c
|
|
a1 = 0x0000007f
|
|
07aa05aa
|
|
sr = 0x001f
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez PACK and UNPK sequence aliased A7 operands and adjustments
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68040
|
|
wx 8f4f01018f8f3030 @ 0
|
|
wx 07aa05bb @ 0x3c
|
|
aezi
|
|
aezv a7 0x40
|
|
aezs
|
|
ar a7
|
|
p8 1 @ 0x3a
|
|
aezv a7 0x3c
|
|
aezs
|
|
ar a7
|
|
p8 6 @ 0x36
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a7 = 0x40
|
|
a7 = 0x0000003a
|
|
86
|
|
a7 = 0x3c
|
|
a7 = 0x00000036
|
|
380036008600
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez original MAC transfers ignore EMAC extensions
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=coldfire
|
|
wx a100a4030000a180 @ 0
|
|
aezi
|
|
aezv macsr 0x80
|
|
aezv d0 0xffffffff
|
|
aezv d2 1
|
|
aezv d3 1
|
|
aezv accext01 0xdeadffff
|
|
aezs
|
|
ar acc0
|
|
ar macsr
|
|
ar accext01
|
|
aezs
|
|
ar acc0
|
|
aezs
|
|
ar d0
|
|
ar accext01
|
|
EOF
|
|
EXPECT=<<EOF
|
|
macsr = 0x80
|
|
d0 = 0xffffffff
|
|
d2 = 0x1
|
|
d3 = 0x1
|
|
accext01 = 0xdeadffff
|
|
acc0 = 0xffffffff
|
|
macsr = 0x00000088
|
|
accext01 = 0xdeadffff
|
|
acc0 = 0x00000000
|
|
d0 = 0x00000000
|
|
accext01 = 0xdeadffff
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez original MAC fractional transfers round only the 32-bit accumulator
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=coldfire
|
|
wx a180a181a182a183a184 @ 0
|
|
aezi
|
|
aezv macsr 0xe0
|
|
aezv accext01 0xffffffff
|
|
aezv acc0 0x00018000
|
|
aezs
|
|
ar d0
|
|
ar acc0
|
|
aezv acc0 0x00028000
|
|
aezs
|
|
ar d1
|
|
aezv acc0 0xffff8000
|
|
aezs
|
|
ar d2
|
|
aezv acc0 0x7fffffff
|
|
aezs
|
|
ar d3
|
|
aezv macsr 0xb0
|
|
aezv acc0 0x12345678
|
|
aezs
|
|
ar d4
|
|
EOF
|
|
EXPECT=<<EOF
|
|
macsr = 0xe0
|
|
accext01 = 0xffffffff
|
|
acc0 = 0x18000
|
|
d0 = 0x00000002
|
|
acc0 = 0x00018000
|
|
acc0 = 0x28000
|
|
d1 = 0x00000002
|
|
acc0 = 0xffff8000
|
|
d2 = 0x00000000
|
|
acc0 = 0x7fffffff
|
|
d3 = 0x00008000
|
|
macsr = 0xb0
|
|
acc0 = 0x12345678
|
|
d4 = 0x12345678
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k analysis rejects malformed decoder operands without assertions
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
env RZ_DEBUG_ASSERT=1
|
|
e asm.cpu=68020
|
|
wx f07affffffff @ 0
|
|
aoj 1 > /dev/null
|
|
EOF
|
|
EXPECT=
|
|
EXPECT_ERR=
|
|
RUN
|
|
|
|
NAME=m68k aez 68060 M changes preserve the supervisor stack
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68060
|
|
wx 007c1000027cefff @ 0
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv a7 0x80
|
|
aezv isp 0x90
|
|
aezv msp 0xa0
|
|
aezv usp 0xb0
|
|
aezs
|
|
ar sr
|
|
ar a7
|
|
aezs
|
|
ar sr
|
|
ar a7
|
|
ar isp
|
|
ar msp
|
|
ar usp
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
a7 = 0x80
|
|
isp = 0x90
|
|
msp = 0xa0
|
|
usp = 0xb0
|
|
sr = 0x3000
|
|
a7 = 0x00000080
|
|
sr = 0x2000
|
|
a7 = 0x00000080
|
|
isp = 0x00000090
|
|
msp = 0x000000a0
|
|
usp = 0x000000b0
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez 68060 RTE keeps one supervisor stack when M is set
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=68060
|
|
wx 4e73 @ 0
|
|
wx 4e73 @ 0x10
|
|
wx 30000000001000000000000000200000 @ 0x40
|
|
aezi
|
|
aezv sr 0x2000
|
|
aezv a7 0x40
|
|
aezv isp 0
|
|
aezv msp 0x90
|
|
aezv usp 0xb0
|
|
aezs
|
|
ar sr
|
|
ar pc
|
|
ar a7
|
|
aezs
|
|
ar sr
|
|
ar pc
|
|
ar a7
|
|
ar isp
|
|
ar msp
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x2000
|
|
a7 = 0x40
|
|
isp = 0x0
|
|
msp = 0x90
|
|
usp = 0xb0
|
|
sr = 0x3000
|
|
pc = 0x00000010
|
|
a7 = 0x00000048
|
|
sr = 0x0000
|
|
pc = 0x00000020
|
|
a7 = 0x000000b0
|
|
isp = 0x00000050
|
|
msp = 0x00000090
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez LPSTOP rejects an immediate that clears S before changing state
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cpu32
|
|
wx f80001c00000 @ 0
|
|
aezi
|
|
aezv sr 0x201f
|
|
aezv a7 0x80
|
|
aezv usp 0xb0
|
|
aezv isp 0x90
|
|
aezs
|
|
ar sr
|
|
ar a7
|
|
ar usp
|
|
ar isp
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x201f
|
|
a7 = 0x80
|
|
usp = 0xb0
|
|
isp = 0x90
|
|
sr = 0x201f
|
|
a7 = 0x00000080
|
|
usp = 0x000000b0
|
|
isp = 0x00000090
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez LPSTOP loads supervisor SR only from supervisor mode
|
|
FILE=malloc://256
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cpu32
|
|
wx f80001c02710 @ 0
|
|
aezi
|
|
aezv sr 0x201f
|
|
aezv a7 0x80
|
|
aezv usp 0xb0
|
|
aezs
|
|
ar sr
|
|
ar a7
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv a7 0xb0
|
|
aezv isp 0x80
|
|
aezs
|
|
ar sr
|
|
ar a7
|
|
ar isp
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x201f
|
|
a7 = 0x80
|
|
usp = 0xb0
|
|
sr = 0x2710
|
|
a7 = 0x00000080
|
|
sr = 0x1f
|
|
a7 = 0xb0
|
|
isp = 0x80
|
|
sr = 0x001f
|
|
a7 = 0x000000b0
|
|
isp = 0x00000080
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez TBLSN.L checks the full result at signed 24-bit boundaries
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cpu32
|
|
wx f8002c81 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x1000000
|
|
aezv d1 0x1000000
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002c81 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x7fffff
|
|
aezv d1 0x7fffff
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002c81 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x7fffff
|
|
aezv d1 0x800000
|
|
aezv d2 0xff
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002c81 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x800000
|
|
aezv d1 0x800000
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002c81 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0xff800000
|
|
aezv d1 0xff800000
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002c81 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0xff800000
|
|
aezv d1 0xff7fffff
|
|
aezv d2 0x1
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002c81 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0xff7fffff
|
|
aezv d1 0xff7fffff
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002c81 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x7fffffff
|
|
aezv d1 0x80000000
|
|
aezv d2 0x80
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002c81 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x1000000
|
|
aezv d1 0x0
|
|
aezv d2 0x80
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x1f
|
|
d0 = 0x1000000
|
|
d1 = 0x1000000
|
|
d2 = 0x0
|
|
d2 = 0x00000000
|
|
sr = 0x0016
|
|
sr = 0x1f
|
|
d0 = 0x7fffff
|
|
d1 = 0x7fffff
|
|
d2 = 0x0
|
|
d2 = 0x7fffff00
|
|
sr = 0x0010
|
|
sr = 0x1f
|
|
d0 = 0x7fffff
|
|
d1 = 0x800000
|
|
d2 = 0xff
|
|
d2 = 0x7fffffff
|
|
sr = 0x0010
|
|
sr = 0x1f
|
|
d0 = 0x800000
|
|
d1 = 0x800000
|
|
d2 = 0x0
|
|
d2 = 0x80000000
|
|
sr = 0x001a
|
|
sr = 0x1f
|
|
d0 = 0xff800000
|
|
d1 = 0xff800000
|
|
d2 = 0x0
|
|
d2 = 0x80000000
|
|
sr = 0x0018
|
|
sr = 0x1f
|
|
d0 = 0xff800000
|
|
d1 = 0xff7fffff
|
|
d2 = 0x1
|
|
d2 = 0x7fffffff
|
|
sr = 0x0012
|
|
sr = 0x1f
|
|
d0 = 0xff7fffff
|
|
d1 = 0xff7fffff
|
|
d2 = 0x0
|
|
d2 = 0x7fffff00
|
|
sr = 0x0012
|
|
sr = 0x1f
|
|
d0 = 0x7fffffff
|
|
d1 = 0x80000000
|
|
d2 = 0x80
|
|
d2 = 0xffffff80
|
|
sr = 0x0018
|
|
sr = 0x1f
|
|
d0 = 0x1000000
|
|
d1 = 0x0
|
|
d2 = 0x80
|
|
d2 = 0x80000000
|
|
sr = 0x001a
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez TBLUN.L uses the manual signed 24-bit overflow range
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cpu32
|
|
wx f8002481 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x7fffff
|
|
aezv d1 0x800000
|
|
aezv d2 0xff
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002481 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x800000
|
|
aezv d1 0x800000
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002481 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x1000000
|
|
aezv d1 0x1000000
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002481 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0xffffffff
|
|
aezv d1 0xffffffff
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002481 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0xffffffff
|
|
aezv d1 0x0
|
|
aezv d2 0xff
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002481 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x0
|
|
aezv d1 0x1000000
|
|
aezv d2 0x80
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002481 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x0
|
|
aezv d1 0x0
|
|
aezv d2 0xff
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x1f
|
|
d0 = 0x7fffff
|
|
d1 = 0x800000
|
|
d2 = 0xff
|
|
d2 = 0x7fffffff
|
|
sr = 0x0010
|
|
sr = 0x1f
|
|
d0 = 0x800000
|
|
d1 = 0x800000
|
|
d2 = 0x0
|
|
d2 = 0x80000000
|
|
sr = 0x001a
|
|
sr = 0x1f
|
|
d0 = 0x1000000
|
|
d1 = 0x1000000
|
|
d2 = 0x0
|
|
d2 = 0x00000000
|
|
sr = 0x0016
|
|
sr = 0x1f
|
|
d0 = 0xffffffff
|
|
d1 = 0xffffffff
|
|
d2 = 0x0
|
|
d2 = 0xffffff00
|
|
sr = 0x001a
|
|
sr = 0x1f
|
|
d0 = 0xffffffff
|
|
d1 = 0x0
|
|
d2 = 0xff
|
|
d2 = 0xffffffff
|
|
sr = 0x001a
|
|
sr = 0x1f
|
|
d0 = 0x0
|
|
d1 = 0x1000000
|
|
d2 = 0x80
|
|
d2 = 0x80000000
|
|
sr = 0x001a
|
|
sr = 0x1f
|
|
d0 = 0x0
|
|
d1 = 0x0
|
|
d2 = 0xff
|
|
d2 = 0x00000000
|
|
sr = 0x0014
|
|
EOF
|
|
RUN
|
|
|
|
NAME=m68k aez rounded long and unrounded narrow table results clear V
|
|
FILE=malloc://128
|
|
ARGS=-a m68k -b 32 -E big
|
|
CMDS=<<EOF
|
|
e asm.cpu=cpu32
|
|
wx f8002881 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x1000000
|
|
aezv d1 0x1000000
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002081 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0xffffffff
|
|
aezv d1 0xffffffff
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002c41 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x8000
|
|
aezv d1 0x8000
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002441 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0xffff
|
|
aezv d1 0xffff
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002c01 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0x80
|
|
aezv d1 0x80
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
wx f8002401 @ 0
|
|
s 0
|
|
aezi
|
|
aezv sr 0x1f
|
|
aezv d0 0xff
|
|
aezv d1 0xff
|
|
aezv d2 0x0
|
|
aezs
|
|
ar d2
|
|
ar sr
|
|
EOF
|
|
EXPECT=<<EOF
|
|
sr = 0x1f
|
|
d0 = 0x1000000
|
|
d1 = 0x1000000
|
|
d2 = 0x0
|
|
d2 = 0x01000000
|
|
sr = 0x0010
|
|
sr = 0x1f
|
|
d0 = 0xffffffff
|
|
d1 = 0xffffffff
|
|
d2 = 0x0
|
|
d2 = 0xffffffff
|
|
sr = 0x0018
|
|
sr = 0x1f
|
|
d0 = 0x8000
|
|
d1 = 0x8000
|
|
d2 = 0x0
|
|
d2 = 0xff800000
|
|
sr = 0x0018
|
|
sr = 0x1f
|
|
d0 = 0xffff
|
|
d1 = 0xffff
|
|
d2 = 0x0
|
|
d2 = 0x00ffff00
|
|
sr = 0x0010
|
|
sr = 0x1f
|
|
d0 = 0x80
|
|
d1 = 0x80
|
|
d2 = 0x0
|
|
d2 = 0xffff8000
|
|
sr = 0x0018
|
|
sr = 0x1f
|
|
d0 = 0xff
|
|
d1 = 0xff
|
|
d2 = 0x0
|
|
d2 = 0x0000ff00
|
|
sr = 0x0010
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Testing the decryption in emulateme cpu32
|
|
FILE=bins/elf/m68k/emulateme-cpu32
|
|
TIMEOUT=30
|
|
REGEXP_FILTER_ERR=ERROR.*\n
|
|
CMDS=<<EOF
|
|
e io.cache=1
|
|
aaa
|
|
wx 00100000 @ 0x200080
|
|
wx 00200100 @ 0x200084
|
|
wx 416e79436f6c6f7572596f754c696b65 @ 0x200100
|
|
s sym.decrypt
|
|
aezi
|
|
aezv a7 0x200080
|
|
aezsu 0x100192
|
|
aezv d0
|
|
ps @ obj.seckrit
|
|
EOF
|
|
EXPECT=<<EOF
|
|
a7 = 0x200080
|
|
d0: 0x00000001
|
|
Hello from RzIL!
|
|
EOF
|
|
EXPECT_ERR=
|
|
RUN
|