rizin/test/db/analysis/m68k
billow 9e7cc02fcf
Update Capstone and add M68k ColdFire support (#6399)
* Update Capstone and add m68k ColdFire support
* Fix test 'core regs linux m68k'
* Add M68K ColdFire integration coverage
* Update Capstone v6 to version 6.0.0-Alpha9
* Refactor CPU mode detection to use case-insensitive string comparison
* Update Capstone next revision to 3df6ff0
2026-05-31 16:15:56 +08:00

2676 lines
48 KiB
Text

NAME=M68k analysis
FILE=bins/smd/LiquidSpaceDodgerV3.bin
CMDS=<<EOF
ao @ 0x00000230~jump[1]
echo ---
iI
echo ---
e asm.pseudo=true
af
pif
EOF
EXPECT=<<EOF
0x000009f2
---
arch m68k
cpu N/A
features N/A
baddr 0x00000000
binsz 0x000272f8
bintype N/A
bits 32
class SEGA MEGASIS
compiler N/A
dbg_file N/A
endian BE
hdr.csum N/A
guid N/A
intrp N/A
laddr 0x00000000
lang N/A
machine Sega Megadrive
maxopsz 22
minopsz 2
os smd
cc N/A
pcalign 2
rpath N/A
subsys
stripped false
havecode true
va true
static true
linenum false
lsyms false
canary false
pie false
relrocs false
nx false
---
d0 = 0xa10001
d0 &= 0xf
if (==) goto 0x216
0xa14000 = 0x53454741
sr = 0x2700
0xa11100 = 0x100
0xa11200 = 0x100
a7 = sym.SSP
call 0x9f2
call 0xa72
call 0x9ca
call 0xa86
a5 = 0x2338
d4 = 0xbff
(a3) = 0x40000000
call 0x9ea
a5 = 0x1db6
(a3) = 0xc0000000
d4 = 0x2f
call 0x9ea
call 0xae0
a5 = 0x3b38
(a3) = 0x5c000000
d4 = 0x11ff
call 0x9ea
a5 = 0x5f38
d4 = section..header
(a3) = 0x58000000
call 0x9ea
a5 = 0x6138
d4 = 0x24d0
(a3) = 0x40000001
call 0x9ea
a5 = 0xaad8
d4 = 0x7ff
(a3) = 0x40000003
call 0xa9a
a5 = 0x2276
d4 = 0
(a3) = 0x60000002
call 0x9a2
0xff0022 = 0x1
call 0x1c94
0xff000e = 0x110
0xff002e = 0xee
0xff001e = 0x5
0xff0030 = 0xff
0xff0022 = 0x1
0xff0020 = 0x1
call 0xa2e
sr = 0x2300
0xff0014 = 0x0
call 0x490
call 0x3d0
call 0xdd6
call 0x36c
call 0x4d4
call 0x6d0
call 0x1b8c
0xff000a = 0xff
0x1 += 0xff0014
call 0x472
0xff000a == 0
if (!=) goto 0x33e
goto 0x312
EOF
RUN
NAME=m68k regs
FILE=
CMDS=<<EOF
e asm.arch=m68k
ar
EOF
EXPECT=<<EOF
d0 = 0x00000000
d1 = 0x00000000
d2 = 0x00000000
d3 = 0x00000000
d4 = 0x00000000
d5 = 0x00000000
d6 = 0x00000000
d7 = 0x00000000
a0 = 0x00000000
a1 = 0x00000000
a2 = 0x00000000
a3 = 0x00000000
a4 = 0x00000000
a5 = 0x00000000
a6 = 0x00000000
a7 = 0x00000000
pc = 0x00000000
fp0 = 0x00000000
fp1 = 0x00000000
fp2 = 0x00000000
fp3 = 0x00000000
fp4 = 0x00000000
fp5 = 0x00000000
fp6 = 0x00000000
fp7 = 0x00000000
fpcr = 0x00000000
fpsr = 0x00000000
fpiar = 0x00000000
sr = 0x0000
sfc = 0x00000000
dfc = 0x00000000
usp = 0x00000000
vbr = 0x00000000
cacr = 0x00000000
caar = 0x00000000
msp = 0x00000000
isp = 0x00000000
tc = 0x00000000
itt0 = 0x00000000
itt1 = 0x00000000
dtt0 = 0x00000000
dtt1 = 0x00000000
mmusr = 0x00000000
urp = 0x00000000
srp = 0x00000000
tt0 = 0x00000000
tt1 = 0x00000000
crp = 0x00000000
acc = 0x00000000
acc0 = 0x00000000
acc1 = 0x00000000
acc2 = 0x00000000
acc3 = 0x00000000
accext01 = 0x00000000
accext23 = 0x00000000
macsr = 0x00000000
mask = 0x00000000
EOF
RUN
NAME=M68k ColdFire integer analysis
FILE==
CMDS=<<EOF
e asm.arch=m68k
e asm.bits=32
e asm.cpu=cfv4e
e asm.lines=false
wx d080d1c00680000000015280d180c080028000000001e180e080660260fe61ff000000104ac0b080b1c00c80000000014c4028024c402401b1800a800000000148c049c04ed04e904ebafffc4eb9000000104ef9000000104e500004e188e08841d048502000204048d000037001c1c0c0c0448040804e71468080800080000000014e754e7350c0908091c00480000000015380918048404e404a804e58731071c04c80a293a2a900c002c104c2f42840e746fc04d2fb10fbd0000351fcfcc00050fc802123fd802123fc000e00e358e258
pdj 74~{}
EOF
EXPECT=<<EOF
[
{
"offset": 0,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "add.l d0, d0",
"disasm": "add.l d0, d0",
"bytes": "d080",
"family": "cpu",
"type": "add",
"reloc": false,
"type_num": 17,
"type2_num": 0
},
{
"offset": 2,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "adda.l d0, a0",
"disasm": "adda.l d0, a0",
"bytes": "d1c0",
"family": "cpu",
"type": "add",
"reloc": false,
"type_num": 17,
"type2_num": 0
},
{
"offset": 4,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "addi.l 0x1, d0",
"disasm": "addi.l 0x1, d0",
"bytes": "068000000001",
"family": "cpu",
"type": "add",
"reloc": false,
"type_num": 17,
"type2_num": 0
},
{
"offset": 10,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "addq.l 0x1, d0",
"disasm": "addq.l 0x1, d0",
"bytes": "5280",
"family": "cpu",
"type": "add",
"reloc": false,
"type_num": 17,
"type2_num": 0
},
{
"offset": 12,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "addx.l d0, d0",
"disasm": "addx.l d0, d0",
"bytes": "d180",
"family": "cpu",
"type": "add",
"reloc": false,
"type_num": 17,
"type2_num": 0
},
{
"offset": 14,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "and.l d0, d0",
"disasm": "and.l d0, d0",
"bytes": "c080",
"family": "cpu",
"type": "and",
"reloc": false,
"type_num": 27,
"type2_num": 0
},
{
"offset": 16,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "andi.l 0x1, d0",
"disasm": "andi.l 0x1, d0",
"bytes": "028000000001",
"family": "cpu",
"type": "and",
"reloc": false,
"type_num": 27,
"type2_num": 0
},
{
"offset": 22,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "asl.l 0x8, d0",
"disasm": "asl.l 0x8, d0",
"bytes": "e180",
"family": "cpu",
"type": "shl",
"reloc": false,
"type_num": 23,
"type2_num": 0
},
{
"offset": 24,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "asr.l 0x8, d0",
"disasm": "asr.l 0x8, d0",
"bytes": "e080",
"family": "cpu",
"type": "shr",
"reloc": false,
"type_num": 22,
"type2_num": 0
},
{
"offset": 26,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "bne.b 0x1e",
"disasm": "bne.b 0x1e",
"bytes": "6602",
"family": "cpu",
"type": "cjmp",
"reloc": false,
"type_num": 2147483649,
"type2_num": 0,
"jump": 30,
"fail": 28
},
{
"offset": 28,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "bra.b 0x1c",
"disasm": "bra.b 0x1c",
"bytes": "60fe",
"family": "cpu",
"type": "jmp",
"reloc": false,
"type_num": 1,
"type2_num": 0,
"jump": 28,
"fail": 30
},
{
"offset": 30,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "bsr.l 0x30",
"disasm": "bsr.l 0x30",
"bytes": "61ff00000010",
"family": "cpu",
"type": "call",
"reloc": false,
"type_num": 3,
"type2_num": 0,
"jump": 48,
"fail": 36
},
{
"offset": 36,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "tas.b d0",
"disasm": "tas.b d0",
"bytes": "4ac0",
"family": "cpu",
"type": "null",
"reloc": false,
"type_num": 0,
"type2_num": 0
},
{
"offset": 38,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "cmp.l d0, d0",
"disasm": "cmp.l d0, d0",
"bytes": "b080",
"family": "cpu",
"type": "cmp",
"reloc": false,
"type_num": 15,
"type2_num": 0
},
{
"offset": 40,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "cmpa.l d0, a0",
"disasm": "cmpa.l d0, a0",
"bytes": "b1c0",
"family": "cpu",
"type": "cmp",
"reloc": false,
"type_num": 15,
"type2_num": 0
},
{
"offset": 42,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "cmpi.l 0x1, d0",
"disasm": "cmpi.l 0x1, d0",
"bytes": "0c8000000001",
"family": "cpu",
"type": "cmp",
"reloc": false,
"type_num": 15,
"type2_num": 0
},
{
"offset": 48,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "divs.l d0, d2",
"disasm": "divs.l d0, d2",
"bytes": "4c402802",
"family": "cpu",
"type": "div",
"reloc": false,
"type_num": 21,
"type2_num": 0
},
{
"offset": 52,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "divu.l d0, d1:d2",
"disasm": "divu.l d0, d1:d2",
"bytes": "4c402401",
"family": "cpu",
"type": "div",
"reloc": false,
"type_num": 21,
"type2_num": 0
},
{
"offset": 56,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "eor.l d0, d0",
"disasm": "eor.l d0, d0",
"bytes": "b180",
"family": "cpu",
"type": "xor",
"reloc": false,
"type_num": 28,
"type2_num": 0
},
{
"offset": 58,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "eori.l 0x1, d0",
"disasm": "eori.l 0x1, d0",
"bytes": "0a8000000001",
"family": "cpu",
"type": "xor",
"reloc": false,
"type_num": 28,
"type2_num": 0
},
{
"offset": 64,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "ext.l d0",
"disasm": "ext.l d0",
"bytes": "48c0",
"family": "cpu",
"type": "cast",
"reloc": false,
"type_num": 42,
"type2_num": 0
},
{
"offset": 66,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "extb.l d0",
"disasm": "extb.l d0",
"bytes": "49c0",
"family": "cpu",
"type": "cast",
"reloc": false,
"type_num": 42,
"type2_num": 0
},
{
"offset": 68,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "jmp (a0)",
"disasm": "jmp (a0)",
"bytes": "4ed0",
"family": "cpu",
"type": "ijmp",
"reloc": false,
"type_num": 134217730,
"type2_num": 0
},
{
"offset": 70,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "jsr (a0)",
"disasm": "jsr (a0)",
"bytes": "4e90",
"family": "cpu",
"type": "icall",
"reloc": false,
"type_num": 134217732,
"type2_num": 0
},
{
"offset": 72,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "jsr 0x46(pc)",
"disasm": "jsr 0x46(pc)",
"bytes": "4ebafffc",
"family": "cpu",
"type": "call",
"reloc": false,
"type_num": 3,
"type2_num": 0,
"jump": 70,
"fail": 76
},
{
"offset": 76,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "jsr 0x10.l",
"disasm": "jsr 0x10.l",
"bytes": "4eb900000010",
"family": "cpu",
"type": "call",
"reloc": false,
"type_num": 3,
"type2_num": 0,
"jump": 16,
"fail": 82
},
{
"offset": 82,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "jmp 0x10.l",
"disasm": "jmp 0x10.l",
"bytes": "4ef900000010",
"family": "cpu",
"type": "jmp",
"reloc": false,
"type_num": 1,
"type2_num": 0,
"jump": 16,
"fail": 88
},
{
"offset": 88,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "link.w a0, 0x4",
"disasm": "link.w a0, 0x4",
"bytes": "4e500004",
"family": "cpu",
"type": "push",
"reloc": false,
"type_num": 13,
"type2_num": 0
},
{
"offset": 92,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "lsl.l 0x8, d0",
"disasm": "lsl.l 0x8, d0",
"bytes": "e188",
"family": "cpu",
"type": "shl",
"reloc": false,
"type_num": 23,
"type2_num": 0
},
{
"offset": 94,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "lsr.l 0x8, d0",
"disasm": "lsr.l 0x8, d0",
"bytes": "e088",
"family": "cpu",
"type": "shr",
"reloc": false,
"type_num": 22,
"type2_num": 0
},
{
"offset": 96,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "lea.l (a0), a0",
"disasm": "lea.l (a0), a0",
"bytes": "41d0",
"family": "cpu",
"type": "lea",
"reloc": false,
"type_num": 33,
"type2_num": 0
},
{
"offset": 98,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "pea.l (a0)",
"disasm": "pea.l (a0)",
"bytes": "4850",
"family": "cpu",
"type": "lea",
"reloc": false,
"type_num": 33,
"type2_num": 0
},
{
"offset": 100,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "move.l d0, d0",
"disasm": "move.l d0, d0",
"bytes": "2000",
"family": "cpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 102,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "movea.l d0, a0",
"disasm": "movea.l d0, a0",
"bytes": "2040",
"family": "cpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 104,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "movem.l d0-d1, (a0)",
"disasm": "movem.l d0-d1, (a0)",
"bytes": "48d00003",
"family": "cpu",
"type": "store",
"reloc": false,
"type_num": 31,
"type2_num": 0
},
{
"offset": 108,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "moveq 0x1, d0",
"disasm": "moveq 0x1, d0",
"bytes": "7001",
"family": "cpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 110,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "muls.w d0, d0",
"disasm": "muls.w d0, d0",
"bytes": "c1c0",
"family": "cpu",
"type": "mul",
"reloc": false,
"type_num": 20,
"type2_num": 0
},
{
"offset": 112,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "mulu.w d0, d0",
"disasm": "mulu.w d0, d0",
"bytes": "c0c0",
"family": "cpu",
"type": "mul",
"reloc": false,
"type_num": 20,
"type2_num": 0
},
{
"offset": 114,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "neg.l d0",
"disasm": "neg.l d0",
"bytes": "4480",
"family": "cpu",
"type": "sub",
"reloc": false,
"type_num": 18,
"type2_num": 0
},
{
"offset": 116,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "negx.l d0",
"disasm": "negx.l d0",
"bytes": "4080",
"family": "cpu",
"type": "sub",
"reloc": false,
"type_num": 18,
"type2_num": 0
},
{
"offset": 118,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "nop",
"disasm": "nop",
"bytes": "4e71",
"family": "cpu",
"type": "nop",
"reloc": false,
"type_num": 8,
"type2_num": 0
},
{
"offset": 120,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "not.l d0",
"disasm": "not.l d0",
"bytes": "4680",
"family": "cpu",
"type": "not",
"reloc": false,
"type_num": 30,
"type2_num": 0
},
{
"offset": 122,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "or.l d0, d0",
"disasm": "or.l d0, d0",
"bytes": "8080",
"family": "cpu",
"type": "or",
"reloc": false,
"type_num": 26,
"type2_num": 0
},
{
"offset": 124,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "ori.l 0x1, d0",
"disasm": "ori.l 0x1, d0",
"bytes": "008000000001",
"family": "cpu",
"type": "or",
"reloc": false,
"type_num": 26,
"type2_num": 0
},
{
"offset": 130,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "rts",
"disasm": "rts",
"bytes": "4e75",
"family": "cpu",
"type": "ret",
"reloc": false,
"type_num": 5,
"type2_num": 0
},
{
"offset": 132,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "rte",
"disasm": "rte",
"bytes": "4e73",
"family": "cpu",
"type": "ret",
"reloc": false,
"type_num": 5,
"type2_num": 0
},
{
"offset": 134,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "st.b d0",
"disasm": "st.b d0",
"bytes": "50c0",
"family": "cpu",
"type": "null",
"reloc": false,
"type_num": 0,
"type2_num": 0
},
{
"offset": 136,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "sub.l d0, d0",
"disasm": "sub.l d0, d0",
"bytes": "9080",
"family": "cpu",
"type": "sub",
"reloc": false,
"type_num": 18,
"type2_num": 0
},
{
"offset": 138,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "suba.l d0, a0",
"disasm": "suba.l d0, a0",
"bytes": "91c0",
"family": "cpu",
"type": "sub",
"reloc": false,
"type_num": 18,
"type2_num": 0
},
{
"offset": 140,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "subi.l 0x1, d0",
"disasm": "subi.l 0x1, d0",
"bytes": "048000000001",
"family": "cpu",
"type": "sub",
"reloc": false,
"type_num": 18,
"type2_num": 0
},
{
"offset": 146,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "subq.l 0x1, d0",
"disasm": "subq.l 0x1, d0",
"bytes": "5380",
"family": "cpu",
"type": "sub",
"reloc": false,
"type_num": 18,
"type2_num": 0
},
{
"offset": 148,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "subx.l d0, d0",
"disasm": "subx.l d0, d0",
"bytes": "9180",
"family": "cpu",
"type": "sub",
"reloc": false,
"type_num": 18,
"type2_num": 0
},
{
"offset": 150,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "swap d0",
"disasm": "swap d0",
"bytes": "4840",
"family": "cpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 152,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "trap 0x0",
"disasm": "trap 0x0",
"bytes": "4e40",
"family": "cpu",
"type": "trap",
"reloc": false,
"type_num": 10,
"type2_num": 0
},
{
"offset": 154,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "tst.l d0",
"disasm": "tst.l d0",
"bytes": "4a80",
"family": "cpu",
"type": "cmp",
"reloc": false,
"type_num": 15,
"type2_num": 0
},
{
"offset": 156,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "unlk a0",
"disasm": "unlk a0",
"bytes": "4e58",
"family": "cpu",
"type": "pop",
"reloc": false,
"type_num": 14,
"type2_num": 0
},
{
"offset": 158,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "mvs.b (a0), d1",
"disasm": "mvs.b (a0), d1",
"bytes": "7310",
"family": "cpu",
"type": "load",
"reloc": false,
"type_num": 32,
"type2_num": 0
},
{
"offset": 160,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "mvz.w d0, d0",
"disasm": "mvz.w d0, d0",
"bytes": "71c0",
"family": "cpu",
"type": "cast",
"reloc": false,
"type_num": 42,
"type2_num": 0
},
{
"offset": 162,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "sats.l d0",
"disasm": "sats.l d0",
"bytes": "4c80",
"family": "cpu",
"type": "cast",
"reloc": false,
"type_num": 42,
"type2_num": 0
},
{
"offset": 164,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "mac.w a1l, a2u, <<, (a3)&, d1, acc0",
"disasm": "mac.w a1l, a2u, <<, (a3)&, d1, acc0",
"bytes": "a293a2a9",
"family": "cpu",
"type": "mul",
"reloc": false,
"type_num": 20,
"type2_num": 0
},
{
"offset": 168,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "bitrev d0",
"disasm": "bitrev d0",
"bytes": "00c0",
"family": "cpu",
"type": "undefined",
"reloc": false,
"type_num": 49,
"type2_num": 0
},
{
"offset": 170,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "byterev d1",
"disasm": "byterev d1",
"bytes": "02c1",
"family": "cpu",
"type": "undefined",
"reloc": false,
"type_num": 49,
"type2_num": 0
},
{
"offset": 172,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "ff1 d2",
"disasm": "ff1 d2",
"bytes": "04c2",
"family": "cpu",
"type": "undefined",
"reloc": false,
"type_num": 48,
"type2_num": 0
},
{
"offset": 174,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "intouch (a0)",
"disasm": "intouch (a0)",
"bytes": "f428",
"family": "cpu",
"type": "sync",
"reloc": false,
"type_num": 47,
"type2_num": 0
},
{
"offset": 176,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "strldsr.w 0x4d2",
"disasm": "strldsr.w 0x4d2",
"bytes": "40e746fc04d2",
"family": "cpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 182,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "wddata.b (a0)",
"disasm": "wddata.b (a0)",
"bytes": "fb10",
"family": "cpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 184,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "wdebug.l (a0)",
"disasm": "wdebug.l (a0)",
"bytes": "fbd00003",
"family": "cpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 188,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "tpf",
"disasm": "tpf",
"bytes": "51fc",
"family": "cpu",
"type": "trap",
"reloc": false,
"type_num": 10,
"type2_num": 0
},
{
"offset": 190,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "cp0bcbusy 0x110",
"disasm": "cp0bcbusy 0x110",
"bytes": "fcc00050",
"family": "cpu",
"type": "cjmp",
"reloc": false,
"type_num": 2147483649,
"type2_num": 0,
"jump": 272,
"fail": 194
},
{
"offset": 194,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "cp0ld.l d0, d2, 0x1, 0x123",
"disasm": "cp0ld.l d0, d2, 0x1, 0x123",
"bytes": "fc802123",
"family": "cpu",
"type": "load",
"reloc": false,
"type_num": 32,
"type2_num": 0
},
{
"offset": 198,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "cp0st.l d2, d0, 0x1, 0x123",
"disasm": "cp0st.l d2, d0, 0x1, 0x123",
"bytes": "fd802123",
"family": "cpu",
"type": "store",
"reloc": false,
"type_num": 31,
"type2_num": 0
},
{
"offset": 202,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "cp0nop 0x8",
"disasm": "cp0nop 0x8",
"bytes": "fc000e00",
"family": "cpu",
"type": "nop",
"reloc": false,
"type_num": 8,
"type2_num": 0
},
{
"offset": 206,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "rol.w 0x1, d0",
"disasm": "rol.w 0x1, d0",
"bytes": "e358",
"family": "cpu",
"type": "rol",
"reloc": false,
"type_num": 36,
"type2_num": 0
},
{
"offset": 208,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "ror.w 0x1, d0",
"disasm": "ror.w 0x1, d0",
"bytes": "e258",
"family": "cpu",
"type": "ror",
"reloc": false,
"type_num": 35,
"type2_num": 0
}
]
EOF
RUN
NAME=M68k ColdFire FPU analysis
FILE==
CMDS=<<EOF
e asm.arch=m68k
e asm.bits=32
e asm.cpu=cfv4e
e asm.lines=false
wx f2004000f2006000f23c44803f800000f23c5480400921fb54442d18f2105000f2106400f210c003f210e003f2800000f2800010f2c000000010f24800000010f2500000f27c0000f27a00001234f27b000012345678f200053af2000522f2000a28f2000523f2000520f2000521f2000525f2000538f2000518f200051af2000501f2000503f310f350f200051d
pdj 31~{}
EOF
EXPECT=<<EOF
[
{
"offset": 0,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fmove.l d0, fp0",
"disasm": "fmove.l d0, fp0",
"bytes": "f2004000",
"family": "fpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 4,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fmove.l fp0, d0",
"disasm": "fmove.l fp0, d0",
"bytes": "f2006000",
"family": "fpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 8,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 8,
"opcode": "fmove.s 1.000000, fp1",
"disasm": "fmove.s 1.000000, fp1",
"bytes": "f23c44803f800000",
"family": "fpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 16,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 12,
"opcode": "fmove.d 3.141593, fp1",
"disasm": "fmove.d 3.141593, fp1",
"bytes": "f23c5480400921fb54442d18",
"family": "fpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 28,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fmove.w (a0), fp0",
"disasm": "fmove.w (a0), fp0",
"bytes": "f2105000",
"family": "fpu",
"type": "load",
"reloc": false,
"type_num": 32,
"type2_num": 0
},
{
"offset": 32,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fmove.s fp0, (a0)",
"disasm": "fmove.s fp0, (a0)",
"bytes": "f2106400",
"family": "fpu",
"type": "store",
"reloc": false,
"type_num": 31,
"type2_num": 0
},
{
"offset": 36,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fmovem (a0), fp0-fp1",
"disasm": "fmovem (a0), fp0-fp1",
"bytes": "f210c003",
"family": "fpu",
"type": "load",
"reloc": false,
"type_num": 32,
"type2_num": 0
},
{
"offset": 40,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fmovem fp0-fp1, (a0)",
"disasm": "fmovem fp0-fp1, (a0)",
"bytes": "f210e003",
"family": "fpu",
"type": "store",
"reloc": false,
"type_num": 31,
"type2_num": 0
},
{
"offset": 44,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fnop",
"disasm": "fnop",
"bytes": "f2800000",
"family": "fpu",
"type": "nop",
"reloc": false,
"type_num": 8,
"type2_num": 0
},
{
"offset": 48,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fbf.w 0x42",
"disasm": "fbf.w 0x42",
"bytes": "f2800010",
"family": "fpu",
"type": "cjmp",
"reloc": false,
"type_num": 2147483649,
"type2_num": 0,
"jump": 66,
"fail": 52
},
{
"offset": 52,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "fbf.l 0x46",
"disasm": "fbf.l 0x46",
"bytes": "f2c000000010",
"family": "fpu",
"type": "cjmp",
"reloc": false,
"type_num": 2147483649,
"type2_num": 0,
"jump": 70,
"fail": 58
},
{
"offset": 58,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "fdbf d0, 0x4e",
"disasm": "fdbf d0, 0x4e",
"bytes": "f24800000010",
"family": "fpu",
"type": "cjmp",
"reloc": false,
"type_num": 2147483649,
"type2_num": 0,
"jump": 78,
"fail": 64
},
{
"offset": 64,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fsf.b (a0)",
"disasm": "fsf.b (a0)",
"bytes": "f2500000",
"family": "fpu",
"type": "mov",
"reloc": false,
"type_num": 9,
"type2_num": 0
},
{
"offset": 68,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "ftrapf",
"disasm": "ftrapf",
"bytes": "f27c0000",
"family": "fpu",
"type": "trap",
"reloc": false,
"type_num": 10,
"type2_num": 0
},
{
"offset": 72,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 6,
"opcode": "ftrapf.w 0x1234",
"disasm": "ftrapf.w 0x1234",
"bytes": "f27a00001234",
"family": "fpu",
"type": "trap",
"reloc": false,
"type_num": 10,
"type2_num": 0
},
{
"offset": 78,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 8,
"opcode": "ftrapf.w 0x12345678",
"disasm": "ftrapf.w 0x12345678",
"bytes": "f27b000012345678",
"family": "fpu",
"type": "trap",
"reloc": false,
"type_num": 10,
"type2_num": 0
},
{
"offset": 86,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "ftst fp1, fp2",
"disasm": "ftst fp1, fp2",
"bytes": "f200053a",
"family": "fpu",
"type": "cmp",
"reloc": false,
"type_num": 15,
"type2_num": 0
},
{
"offset": 90,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fadd fp1, fp2",
"disasm": "fadd fp1, fp2",
"bytes": "f2000522",
"family": "fpu",
"type": "add",
"reloc": false,
"type_num": 17,
"type2_num": 0
},
{
"offset": 94,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fsub fp2, fp4",
"disasm": "fsub fp2, fp4",
"bytes": "f2000a28",
"family": "fpu",
"type": "sub",
"reloc": false,
"type_num": 18,
"type2_num": 0
},
{
"offset": 98,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fmul fp1, fp2",
"disasm": "fmul fp1, fp2",
"bytes": "f2000523",
"family": "fpu",
"type": "mul",
"reloc": false,
"type_num": 20,
"type2_num": 0
},
{
"offset": 102,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fdiv fp1, fp2",
"disasm": "fdiv fp1, fp2",
"bytes": "f2000520",
"family": "fpu",
"type": "div",
"reloc": false,
"type_num": 21,
"type2_num": 0
},
{
"offset": 106,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fmod fp1, fp2",
"disasm": "fmod fp1, fp2",
"bytes": "f2000521",
"family": "fpu",
"type": "mod",
"reloc": false,
"type_num": 38,
"type2_num": 0
},
{
"offset": 110,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "frem fp1, fp2",
"disasm": "frem fp1, fp2",
"bytes": "f2000525",
"family": "fpu",
"type": "mod",
"reloc": false,
"type_num": 38,
"type2_num": 0
},
{
"offset": 114,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fcmp fp1, fp2",
"disasm": "fcmp fp1, fp2",
"bytes": "f2000538",
"family": "fpu",
"type": "cmp",
"reloc": false,
"type_num": 15,
"type2_num": 0
},
{
"offset": 118,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fabs fp1, fp2",
"disasm": "fabs fp1, fp2",
"bytes": "f2000518",
"family": "fpu",
"type": "undefined",
"reloc": false,
"type_num": 44,
"type2_num": 0
},
{
"offset": 122,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fneg fp1, fp2",
"disasm": "fneg fp1, fp2",
"bytes": "f200051a",
"family": "fpu",
"type": "sub",
"reloc": false,
"type_num": 18,
"type2_num": 0
},
{
"offset": 126,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fint fp1, fp2",
"disasm": "fint fp1, fp2",
"bytes": "f2000501",
"family": "fpu",
"type": "cast",
"reloc": false,
"type_num": 42,
"type2_num": 0
},
{
"offset": 130,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fintrz fp1, fp2",
"disasm": "fintrz fp1, fp2",
"bytes": "f2000503",
"family": "fpu",
"type": "cast",
"reloc": false,
"type_num": 42,
"type2_num": 0
},
{
"offset": 134,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "fsave (a0)",
"disasm": "fsave (a0)",
"bytes": "f310",
"family": "fpu",
"type": "store",
"reloc": false,
"type_num": 31,
"type2_num": 0
},
{
"offset": 136,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "frestore (a0)",
"disasm": "frestore (a0)",
"bytes": "f350",
"family": "fpu",
"type": "load",
"reloc": false,
"type_num": 32,
"type2_num": 0
},
{
"offset": 138,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "fcos fp1, fp2",
"disasm": "fcos fp1, fp2",
"bytes": "f200051d",
"family": "fpu",
"type": "unk",
"reloc": false,
"type_num": 7,
"type2_num": 0
}
]
EOF
RUN
NAME=M68k CPU32 table analysis
FILE==
CMDS=<<EOF
e asm.arch=m68k
e asm.bits=32
e asm.cpu=cpu32
e asm.lines=false
wx 4afaf8100140f8123980f8112500f8145d40
pdj 5~{}
EOF
EXPECT=<<EOF
[
{
"offset": 0,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 2,
"opcode": "bgnd",
"disasm": "bgnd",
"bytes": "4afa",
"family": "cpu",
"type": "trap",
"reloc": false,
"type_num": 10,
"type2_num": 0
},
{
"offset": 2,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "tblu.w (a0), d0",
"disasm": "tblu.w (a0), d0",
"bytes": "f8100140",
"family": "cpu",
"type": "load",
"reloc": false,
"type_num": 32,
"type2_num": 0
},
{
"offset": 6,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "tbls.l (a2), d3",
"disasm": "tbls.l (a2), d3",
"bytes": "f8123980",
"family": "cpu",
"type": "load",
"reloc": false,
"type_num": 32,
"type2_num": 0
},
{
"offset": 10,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "tblun.b (a1), d2",
"disasm": "tblun.b (a1), d2",
"bytes": "f8112500",
"family": "cpu",
"type": "load",
"reloc": false,
"type_num": 32,
"type2_num": 0
},
{
"offset": 14,
"esil": "",
"refptr": false,
"fcn_addr": 0,
"fcn_last": 0,
"size": 4,
"opcode": "tblsn.w (a4), d5",
"disasm": "tblsn.w (a4), d5",
"bytes": "f8145d40",
"family": "cpu",
"type": "load",
"reloc": false,
"type_num": 32,
"type2_num": 0
}
]
EOF
RUN
NAME=M68k CPU variant analysis
FILE==
CMDS=<<EOF
e asm.arch=m68k
e asm.bits=32
e asm.lines=false
e asm.cpu=coldfire
wx 7310
echo -- coldfire --
aoj~{}
e asm.cpu=cfv1
wx a554
echo -- cfv1 --
aoj~{}
e asm.cpu=cfv2
wx 4c402802
echo -- cfv2 --
aoj~{}
e asm.cpu=cfv3
wx f4e8
echo -- cfv3 --
aoj~{}
e asm.cpu=cfv4
wx 60ff00000010
echo -- cfv4 --
aoj~{}
e asm.cpu=cfv4e
wx a900
echo -- cfv4e --
aoj~{}
wx 71c0
echo -- cfv4e mvz --
aoj~{}
wx 4c80
echo -- cfv4e sats --
aoj~{}
wx a293a2a9
echo -- cfv4e mac-shift --
aoj~{}
wx 4ebafffc
echo -- cfv4e pc-relative --
aoj~{}
wx 4ed0
echo -- cfv4e indirect --
aoj~{}
wx f23c44803f800000
echo -- cfv4e fpu-single --
aoj~{}
e asm.cpu=cfv5
wx a0010000
echo -- cfv5 --
aoj~{}
e asm.cpu=68040
wx 4eb912345678
echo -- 68040 absolute --
aoj~{}
EOF
EXPECT=<<EOF
-- coldfire --
[
{
"opcode": "mvs.b (a0), d1",
"disasm": "mvs.b (a0), d1",
"pseudo": "asm(\"mvs (a0), d1\")",
"mnemonic": "mvs.b",
"mask": "ffff",
"sign": true,
"prefix": 0,
"id": 299,
"opex": {
"operands": [
{
"type": "mem",
"address_mode": 3,
"base_reg": "a0",
"in_disp": 0,
"out_disp": 0,
"disp": 0,
"scale": 0,
"bitfield": 0,
"width": 0,
"offset": 0,
"index_size": 0,
"in_disp_size": 0,
"out_disp_size": 0,
"disp_size": 0
},
{
"type": "reg",
"value": "d1"
}
]
},
"addr": 0,
"bytes": "7310",
"size": 2,
"type": "load",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv1 --
[
{
"opcode": "mov3q.l 0x2, (a4)",
"disasm": "mov3q.l 0x2, (a4)",
"pseudo": "asm(\"mov3q 0x2, (a4)\")",
"mnemonic": "mov3q.l",
"mask": "ffff",
"sign": false,
"prefix": 0,
"id": 294,
"opex": {
"operands": [
{
"type": "imm",
"value": 2
},
{
"type": "mem",
"address_mode": 3,
"base_reg": "a4",
"in_disp": 0,
"out_disp": 0,
"disp": 0,
"scale": 0,
"bitfield": 0,
"width": 0,
"offset": 0,
"index_size": 0,
"in_disp_size": 0,
"out_disp_size": 0,
"disp_size": 0
}
]
},
"addr": 0,
"bytes": "a554",
"size": 2,
"type": "store",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv2 --
[
{
"opcode": "divs.l d0, d2",
"disasm": "divs.l d0, d2",
"pseudo": "asm(\"divs d0, d2\")",
"mnemonic": "divs.l",
"mask": "ffffffff",
"sign": false,
"prefix": 0,
"id": 78,
"opex": {
"operands": [
{
"type": "reg",
"value": "d0"
},
{
"type": "reg",
"value": "d2"
}
]
},
"addr": 0,
"bytes": "4c402802",
"size": 4,
"type": "div",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv3 --
[
{
"opcode": "cpushl bc, (a0)",
"disasm": "cpushl bc, (a0)",
"pseudo": "asm(\"cpushl bc, (a0)\")",
"mnemonic": "cpushl",
"mask": "ffff",
"sign": false,
"prefix": 0,
"id": 58,
"opex": {
"operands": [
{
"type": "imm",
"value": 3
},
{
"type": "mem",
"address_mode": 3,
"base_reg": "a0",
"in_disp": 0,
"out_disp": 0,
"disp": 0,
"scale": 0,
"bitfield": 0,
"width": 0,
"offset": 0,
"index_size": 0,
"in_disp_size": 0,
"out_disp_size": 0,
"disp_size": 0
}
]
},
"addr": 0,
"bytes": "f4e8",
"size": 2,
"type": "sync",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv4 --
[
{
"opcode": "bra.l 0x12",
"disasm": "bra.l 0x12",
"pseudo": "goto 0x12",
"mnemonic": "bra.l",
"mask": "ff0000000000",
"jump": 18,
"fail": 6,
"sign": false,
"prefix": 0,
"id": 27,
"opex": {
"operands": [
{
"type": "br_disp",
"disp": 16,
"disp_size": 4
}
]
},
"addr": 0,
"bytes": "60ff00000010",
"size": 6,
"type": "jmp",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv4e --
[
{
"opcode": "move.l d0, macsr",
"disasm": "move.l d0, macsr",
"pseudo": "macsr = d0",
"mnemonic": "move.l",
"mask": "ffff",
"sign": false,
"prefix": 0,
"id": 286,
"opex": {
"operands": [
{
"type": "reg",
"value": "d0"
},
{
"type": "reg",
"value": "macsr"
}
]
},
"addr": 0,
"bytes": "a900",
"size": 2,
"type": "mov",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv4e mvz --
[
{
"opcode": "mvz.w d0, d0",
"disasm": "mvz.w d0, d0",
"pseudo": "asm(\"mvz d0, d0\")",
"mnemonic": "mvz.w",
"mask": "ffff",
"sign": false,
"prefix": 0,
"id": 300,
"opex": {
"operands": [
{
"type": "reg",
"value": "d0"
},
{
"type": "reg",
"value": "d0"
}
]
},
"addr": 0,
"bytes": "71c0",
"size": 2,
"type": "cast",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv4e sats --
[
{
"opcode": "sats.l d0",
"disasm": "sats.l d0",
"pseudo": "asm(\"sats d0\")",
"mnemonic": "sats.l",
"mask": "ffff",
"sign": false,
"prefix": 0,
"id": 335,
"opex": {
"operands": [
{
"type": "reg",
"value": "d0"
}
]
},
"addr": 0,
"bytes": "4c80",
"size": 2,
"type": "cast",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv4e mac-shift --
[
{
"opcode": "mac.w a1l, a2u, <<, (a3)&, d1, acc0",
"disasm": "mac.w a1l, a2u, <<, (a3)&, d1, acc0",
"pseudo": "asm(\"mac a1l, a2u, <<, (a3)&, d1, acc0\")",
"mnemonic": "mac.w",
"mask": "ffffffff",
"sign": false,
"prefix": 0,
"id": 285,
"opex": {
"operands": [
{
"flags": 1,
"type": "reg",
"value": "a1"
},
{
"flags": 2,
"type": "reg",
"value": "a2"
},
{
"flags": 4,
"type": "shift"
},
{
"flags": 16,
"type": "mem",
"address_mode": 3,
"base_reg": "a3",
"in_disp": 0,
"out_disp": 0,
"disp": 0,
"scale": 0,
"bitfield": 0,
"width": 0,
"offset": 0,
"index_size": 0,
"in_disp_size": 0,
"out_disp_size": 0,
"disp_size": 0
},
{
"type": "reg",
"value": "d1"
},
{
"type": "reg",
"value": "acc0"
}
]
},
"addr": 0,
"bytes": "a293a2a9",
"size": 4,
"type": "mul",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv4e pc-relative --
[
{
"opcode": "jsr 0xfffffffe(pc)",
"disasm": "jsr 0xfffffffe(pc)",
"pseudo": "call 0xfffffffe(pc)",
"description": "jump to subroutine",
"mnemonic": "jsr",
"mask": "ff000000",
"jump": 4294967294,
"fail": 4,
"sign": false,
"prefix": 0,
"id": 279,
"opex": {
"operands": [
{
"type": "mem",
"address_mode": 11,
"address": 0,
"in_disp": 0,
"out_disp": 0,
"disp": -4,
"scale": 0,
"bitfield": 0,
"width": 0,
"offset": 0,
"index_size": 0,
"in_disp_size": 0,
"out_disp_size": 0,
"disp_size": 1
}
]
},
"addr": 0,
"bytes": "4ebafffc",
"size": 4,
"type": "call",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv4e indirect --
[
{
"opcode": "jmp (a0)",
"disasm": "jmp (a0)",
"pseudo": "goto (a0)",
"description": "jump",
"mnemonic": "jmp",
"mask": "ffff",
"fail": 2,
"sign": false,
"prefix": 0,
"id": 278,
"opex": {
"operands": [
{
"type": "mem",
"address_mode": 3,
"base_reg": "a0",
"in_disp": 0,
"out_disp": 0,
"disp": 0,
"scale": 0,
"bitfield": 0,
"width": 0,
"offset": 0,
"index_size": 0,
"in_disp_size": 0,
"out_disp_size": 0,
"disp_size": 0
}
]
},
"addr": 0,
"bytes": "4ed0",
"size": 2,
"type": "ijmp",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- cfv4e fpu-single --
[
{
"opcode": "fmove.s 1.000000, fp1",
"disasm": "fmove.s 1.000000, fp1",
"pseudo": "asm(\"fmove.s 1.000000, fp1\")",
"mnemonic": "fmove.s",
"mask": "ffffffffffffffff",
"sign": false,
"prefix": 0,
"id": 179,
"opex": {
"operands": [
{
"type": "fp_single",
"value": 1.000000
},
{
"type": "reg",
"value": "fp1"
}
]
},
"addr": 0,
"bytes": "f23c44803f800000",
"size": 8,
"type": "mov",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "fpu"
}
]
-- cfv5 --
[
{
"opcode": "mac.w d1l, d0l, acc0",
"disasm": "mac.w d1l, d0l, acc0",
"pseudo": "asm(\"mac d1l, d0l, acc0\")",
"mnemonic": "mac.w",
"mask": "ffffffff",
"sign": false,
"prefix": 0,
"id": 285,
"opex": {
"operands": [
{
"flags": 1,
"type": "reg",
"value": "d1"
},
{
"flags": 1,
"type": "reg",
"value": "d0"
},
{
"type": "reg",
"value": "acc0"
}
]
},
"addr": 0,
"bytes": "a0010000",
"size": 4,
"type": "mul",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
-- 68040 absolute --
[
{
"opcode": "jsr 0x12345678.l",
"disasm": "jsr 0x12345678.l",
"pseudo": "call 0x12345678",
"description": "jump to subroutine",
"mnemonic": "jsr",
"mask": "ff0000000000",
"jump": 305419896,
"fail": 6,
"sign": false,
"prefix": 0,
"id": 279,
"opex": {
"operands": [
{
"type": "mem",
"address_mode": 17,
"address": 305419896,
"in_disp": 0,
"out_disp": 0,
"disp": 0,
"scale": 0,
"bitfield": 0,
"width": 0,
"offset": 0,
"index_size": 0,
"in_disp_size": 0,
"out_disp_size": 0,
"disp_size": 0
}
]
},
"addr": 0,
"bytes": "4eb912345678",
"size": 6,
"type": "call",
"scale": 0,
"refptr": 0,
"cycles": 0,
"failcycles": 0,
"delay": 0,
"stackptr": 0,
"family": "cpu"
}
]
EOF
RUN