NAME=C55x/C55x+ RzIL VM: register, immediate, memory and multiply execute
FILE=malloc://0x100
CMDS=<<EOF
e asm.arch=tms320
e cfg.bigendian=false
e analysis.cpu=c55x+
wx ac0000427bb1017b3009743332758300 77a422 @ 0
aezi
aezv t0 0
aezv t2 0x10
aezv t3 0x20
aezv ac3 0xf0
aezv xar2 0x55
aezs 6
ar ac0
ar t1
ar t0
ar t3
ar ac3
ar xar4
wx 5802807400015105a0581301580583 @ 0
wx 3412 @ 0x20
wx 7856 @ 0x24
aezi
aezv ac1 0x1000
aezv xar2 0x10
aezv xar3 0x12
aezv xar5 0x18
aezs 5
ar ac0
ar ac1
ar ac3
ar xar3
wx 5b8580 @ 0
wx cdab @ 0x30
aezi
aezv xar5 0x10
aezs 1
ar ac0
wx 72a4277220a1722023760382770162c5626000ff @ 0
aezi
aezv xar0 0x100
aezv xar1 0x10
aezv xar3 0x5
aezv xar7 0x123
aezv ac0 0xabcdef
aezv ac2 0x12345
aezs 6
ar xar4
ar xar0
ar ac3
ar ac1
ar ac2
e analysis.cpu=c55x
wx 229840107b006400 @ 0
aezi
aezv ar1 0x55
aezv ac0 0
aezs 3
ar ar0
ar ac0
wx ac00 @ 0
wx efbe @ 0x40
aezi
aezv sp 0x20
aezs 1
ar ar4
wx 3c01121804 @ 0
aezi
aezv ac0 0
aezs 2
ar st0_55
aezi
aezv ac0 5
aezs 2
ar st0_55
wx 5824 @ 0
aezi
aezv t1 0x4
aezv ac2 0x60000
aezs 1
ar ac0
wx d10100 @ 0
wx 0300 @ 0x20
wx 0500 @ 0x30
aezi
aezv xar0 0x10
aezv xcdp 0x18
aezs 1
ar ac0
wx d10104 @ 0
wx 0300 @ 0x20
wx 0500 @ 0x30
aezi
aezv ac0 0x10
aezv xar0 0x10
aezv xcdp 0x18
aezs 1
ar ac0
wx d20101 @ 0
wx 0300 @ 0x20
aezi
aezv ac0 0x10
aezv ac1 0x50000
aezv xar0 0x10
aezs 1
ar ac0
wx d40101 @ 0
wx 0300 @ 0x20
aezi
aezv ac1 0x100
aezv t0 0x5
aezv xar0 0x10
aezs 1
ar ac0
wx d30104 @ 0
wx 0700 @ 0x20
aezi
aezv ac0 0xff
aezv t0 0x6
aezv xar0 0x10
aezs 1
ar ac0
wx d00104 @ 0
wx 0200 @ 0x20
wx ffff @ 0x30
aezi
aezv xar0 0x10
aezv xcdp 0x18
aezs 1
ar ac0
wx d40180 @ 0
wx 0300 @ 0x20
aezi
aezv ac0 0
aezv xar0 0x10
aezv t0 0x2
aezs 1
ar t3
ar ac0
wx d30108 @ 0
wx fdff @ 0x20
aezi
aezv xar0 0x10
aezs 1
ar ac0
wx d20108 @ 0
wx 0300 @ 0x20
aezi
aezv xar0 0x10
aezv ac0 0x10
aezs 1
ar ac0
EOF
EXPECT=<<EOF
t0 = 0x0
t2 = 0x10
t3 = 0x20
ac3 = 0xf0
xar2 = 0x55
ac0 = 0x0000000042
t1 = 0x0001
t0 = 0x0009
t3 = 0x0030
ac3 = 0x00000000b2
xar4 = 0x000055
ac1 = 0x1000
xar2 = 0x10
xar3 = 0x12
xar5 = 0x18
ac0 = 0x0000002234
ac1 = 0x0000005678
ac3 = 0x0000002234
xar3 = 0x000013
xar5 = 0x10
ac0 = 0x000000abcd
xar0 = 0x100
xar1 = 0x10
xar3 = 0x5
xar7 = 0x123
ac0 = 0xabcdef
ac2 = 0x12345
xar4 = 0x000123
xar0 = 0x00010b
ac3 = 0xfffffedcbb
ac1 = 0x0000002345
ac2 = 0x00000100ef
ar1 = 0x55
ac0 = 0x0
ar0 = 0x0055
ac0 = 0x0000000065
sp = 0x20
ar4 = 0xbeef
ac0 = 0x0
st0_55 = 0x2000
ac0 = 0x5
st0_55 = 0x0000
t1 = 0x4
ac2 = 0x60000
ac0 = 0x0000000018
xar0 = 0x10
xcdp = 0x18
ac0 = 0x000000000f
ac0 = 0x10
xar0 = 0x10
xcdp = 0x18
ac0 = 0x000000001f
ac0 = 0x10
ac1 = 0x50000
xar0 = 0x10
ac0 = 0x000000001f
ac1 = 0x100
t0 = 0x5
xar0 = 0x10
ac0 = 0x000000010f
ac0 = 0xff
t0 = 0x6
xar0 = 0x10
ac0 = 0x000000002a
xar0 = 0x10
xcdp = 0x18
ac0 = 0x000001fffe
ac0 = 0x0
xar0 = 0x10
t0 = 0x2
t3 = 0x0003
ac0 = 0x0000000006
xar0 = 0x10
ac0 = 0x0000000009
xar0 = 0x10
ac0 = 0x10
ac0 = 0x0000000019
EOF
RUN

NAME=C55x RzIL VM: emulateme _decrypt decrypts seckrit to "Hello from RzIL!"
FILE=bins/tms320/emulateme_nostd.ccsv5.c55x.ticoff2.dbg.coff
CMDS=<<EOF
e io.cache=true
e analysis.cpu=c55x
e asm.cpu=c55x
e cfg.bigendian=false
wx 510053004d0077005800140051005f0045006c0017007f006e0078007f001c000000 @ 0x10008
wx 41006e00790043006f006c006f007500720059006f0075004c0069006b006500 @ 0x500
s 0x1a4
aezi
aezv xar0 0x280
aezsu 0x233
p8 32 @ 0x10008
ar t0
ar ar1
EOF
EXPECT=<<EOF
xar0 = 0x280
480065006c006c006f002000660072006f006d00200052007a0049004c002100
t0 = 0x0001
ar1 = 0x0058
EOF
RUN

NAME=C55x+ RzIL VM: emulateme _decrypt decrypts seckrit to "Hello from RzIL!"
FILE=bins/tms320/coff2/19_emulateme_nostd.obj
CMDS=<<EOF
e io.cache=true
e analysis.cpu=c55x+
e asm.cpu=c55x+
e cfg.bigendian=false
wx 510053004d0077005800140051005f0045006c0017007f006e0078007f001c00 @ 0x4
wx 41006e00790043006f006c006f007500720059006f0075004c0069006b006500 @ 0xf0
s 0x68
aezi
aezv xar0 0x78
aezsu 0xb1
p8 32 @ 0x4
ar t0
EOF
EXPECT=<<EOF
xar0 = 0x78
480065006c006c006f002000660072006f006d00200052007a0049004c002100
t0 = 0x0001
EOF
RUN

NAME=C54x RzIL VM: register, immediate, memory execute
FILE=malloc://0x200
CMDS=<<EOF
e asm.arch=tms320
e analysis.cpu=c54x
e asm.cpu=c54x
e cfg.bigendian=false
wx 30f00f0000f61188 @ 0
aezi
aezv a 0x5a
aezv b 0x10
aezs 3
ar a
ar ar1
wx 1248 @ 0
aezi
aezv ar2 0xbeef
aezs 1
ar a
wx 12778004 @ 0
aezi
aezs 1
ar ar2
wx 40f0f000 @ 0
aezi
aezv a 0x0f
aezs 1
ar a
wx 50f0ff00 @ 0
aezi
aezv a 0x0f
aezs 1
ar a
wx 10f00500 @ 0
aezi
aezv a 0x20
aezs 1
ar a
wx 12e5 @ 0
wx 3412 @ 0x40
aezi
aezv ar3 0x20
aezv ar4 0x30
aezs 1
p8 2 @ 0x60
EOF
EXPECT=<<EOF
a = 0x5a
b = 0x10
a = 0x000000001a
ar1 = 0x001a
ar2 = 0xbeef
a = 0x000000beef
ar2 = 0x0480
a = 0xf
a = 0x00000000ff
a = 0xf
a = 0x00000000f0
a = 0x20
a = 0x000000001b
ar3 = 0x20
ar4 = 0x30
3412
EOF
RUN

NAME=C54x RzIL VM: emulateme _decrypt writes hex digits to the UART buffer
FILE=bins/tms320/emulateme_nostd.ccsv5.c54x.ticoff2.dbg.coff
CMDS=<<EOF
e io.cache=true
wx 30003100320033003400350036003700380039006100620063006400650066 @ 0x900
wx 0006 @ 0x9a4
wx 00000000 @ 0x9a8
s 0xec
aezi
aezv a 0x5a
aezv b 0x5
aezv sp 0x100
aezsu 0x136
p8 4 @ 0xc00
p8 2 @ 0x9aa
ar a
EOF
EXPECT=<<EOF
a = 0x5a
b = 0x5
sp = 0x100
35006100
0200
a = 0x0000000002
EOF
RUN
