mirror of
https://github.com/rizinorg/rizin
synced 2026-08-22 20:26:16 -04:00
* Refactor of bflt to guess arch & fix m68k code * Fix endianness issues * Always cleanup at the end on travis ci
1276 lines
16 KiB
Text
1276 lines
16 KiB
Text
NAME=AVR: aeso on call
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
e asm.bits=8
|
|
wx 0xf8 0x94 0x08 0xe0 0x0e 0xbf 0x0f 0xe5 0x0d 0xbf 0x0e 0x94 0x08 0x00 0x88 0x95 0x08 0x95
|
|
aei
|
|
aeim 0x00000100 0xffff avr_ram
|
|
6aeso
|
|
ar pc
|
|
ar pc = 0
|
|
7aes
|
|
ar pc
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pc = 0x0000000e
|
|
pc = 0x0000000e
|
|
EOF
|
|
RUN
|
|
|
|
# des tests are checked against Microchip's AVR Simulator emulating ATxmega128A1
|
|
NAME=AVR: des encrypt
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
(regs ;ar 8~:0..16) # show regs r0-r15
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
wx 0b941b942b943b944b945b946b947b948b949b94ab94bb94cb94db94eb94fb94
|
|
ar r0 = 0x41
|
|
ar r1 = 0x20
|
|
ar r2 = 0x52
|
|
ar r3 = 0x69
|
|
ar r4 = 0x76
|
|
ar r5 = 0x61
|
|
ar r6 = 0x6c
|
|
ar r7 = 0x20
|
|
ar r8 = 0x41
|
|
ar r9 = 0x70
|
|
ar r10 = 0x70
|
|
ar r11 = 0x65
|
|
ar r12 = 0x61
|
|
ar r13 = 0x72
|
|
ar r14 = 0x73
|
|
ar r15 = 0x21
|
|
.(regs)
|
|
aei
|
|
echo -- round 0; aes; .(regs)
|
|
echo -- round 1; aes; .(regs)
|
|
echo -- round 2; aes; .(regs)
|
|
echo -- round 3; aes; .(regs)
|
|
echo -- round 4; aes; .(regs)
|
|
echo -- round 5; aes; .(regs)
|
|
echo -- round 6; aes; .(regs)
|
|
echo -- round 7; aes; .(regs)
|
|
echo -- round 8; aes; .(regs)
|
|
echo -- round 9; aes; .(regs)
|
|
echo -- round 10; aes; .(regs)
|
|
echo -- round 11; aes; .(regs)
|
|
echo -- round 12; aes; .(regs)
|
|
echo -- round 13; aes; .(regs)
|
|
echo -- round 14; aes; .(regs)
|
|
echo -- round 15; aes; .(regs)
|
|
ar pcl
|
|
EOF
|
|
EXPECT=<<EOF
|
|
r0 = 0x41
|
|
r1 = 0x20
|
|
r2 = 0x52
|
|
r3 = 0x69
|
|
r4 = 0x76
|
|
r5 = 0x61
|
|
r6 = 0x6c
|
|
r7 = 0x20
|
|
r8 = 0x41
|
|
r9 = 0x70
|
|
r10 = 0x70
|
|
r11 = 0x65
|
|
r12 = 0x61
|
|
r13 = 0x72
|
|
r14 = 0x73
|
|
r15 = 0x21
|
|
-- round 0
|
|
r0 = 0x00
|
|
r1 = 0x18
|
|
r2 = 0xa9
|
|
r3 = 0xbc
|
|
r4 = 0x1b
|
|
r5 = 0x10
|
|
r6 = 0x36
|
|
r7 = 0x1a
|
|
r8 = 0x71
|
|
r9 = 0x70
|
|
r10 = 0x64
|
|
r11 = 0x61
|
|
r12 = 0x73
|
|
r13 = 0x72
|
|
r14 = 0x21
|
|
r15 = 0x81
|
|
-- round 1
|
|
r0 = 0x22
|
|
r1 = 0x04
|
|
r2 = 0x7e
|
|
r3 = 0x7c
|
|
r4 = 0x8d
|
|
r5 = 0x80
|
|
r6 = 0x91
|
|
r7 = 0x25
|
|
r8 = 0x71
|
|
r9 = 0x64
|
|
r10 = 0x60
|
|
r11 = 0x63
|
|
r12 = 0x73
|
|
r13 = 0x20
|
|
r14 = 0x81
|
|
r15 = 0xe9
|
|
-- round 2
|
|
r0 = 0x91
|
|
r1 = 0x00
|
|
r2 = 0x3d
|
|
r3 = 0xb4
|
|
r4 = 0xe6
|
|
r5 = 0x60
|
|
r6 = 0xc8
|
|
r7 = 0x98
|
|
r8 = 0x61
|
|
r9 = 0x62
|
|
r10 = 0x62
|
|
r11 = 0x21
|
|
r12 = 0x81
|
|
r13 = 0xe8
|
|
r14 = 0xe9
|
|
r15 = 0xc3
|
|
-- round 3
|
|
r0 = 0x62
|
|
r1 = 0x22
|
|
r2 = 0x1c
|
|
r3 = 0x5a
|
|
r4 = 0xf1
|
|
r5 = 0x3a
|
|
r6 = 0x46
|
|
r7 = 0x4e
|
|
r8 = 0x63
|
|
r9 = 0x20
|
|
r10 = 0x80
|
|
r11 = 0xe9
|
|
r12 = 0xe9
|
|
r13 = 0xc2
|
|
r14 = 0xc1
|
|
r15 = 0xd1
|
|
-- round 4
|
|
r0 = 0x3b
|
|
r1 = 0x91
|
|
r2 = 0x26
|
|
r3 = 0x85
|
|
r4 = 0xf0
|
|
r5 = 0x35
|
|
r6 = 0x03
|
|
r7 = 0x8d
|
|
r8 = 0x81
|
|
r9 = 0xe8
|
|
r10 = 0xe8
|
|
r11 = 0xc3
|
|
r12 = 0xc1
|
|
r13 = 0xd0
|
|
r14 = 0xd1
|
|
r15 = 0x41
|
|
-- round 5
|
|
r0 = 0x9d
|
|
r1 = 0x6a
|
|
r2 = 0x19
|
|
r3 = 0xea
|
|
r4 = 0x72
|
|
r5 = 0xba
|
|
r6 = 0x89
|
|
r7 = 0x6e
|
|
r8 = 0xe9
|
|
r9 = 0xc2
|
|
r10 = 0xd0
|
|
r11 = 0xd1
|
|
r12 = 0xd1
|
|
r13 = 0x40
|
|
r14 = 0x01
|
|
r15 = 0xcd
|
|
-- round 6
|
|
r0 = 0x64
|
|
r1 = 0xb5
|
|
r2 = 0x2e
|
|
r3 = 0xff
|
|
r4 = 0x9b
|
|
r5 = 0x5f
|
|
r6 = 0xc4
|
|
r7 = 0x15
|
|
r8 = 0xd1
|
|
r9 = 0xd0
|
|
r10 = 0xd0
|
|
r11 = 0x51
|
|
r12 = 0x01
|
|
r13 = 0xcc
|
|
r14 = 0xcd
|
|
r15 = 0x91
|
|
-- round 7
|
|
r0 = 0xba
|
|
r1 = 0x5a
|
|
r2 = 0x97
|
|
r3 = 0x5f
|
|
r4 = 0xef
|
|
r5 = 0x8f
|
|
r6 = 0xe2
|
|
r7 = 0x08
|
|
r8 = 0xd1
|
|
r9 = 0x50
|
|
r10 = 0x10
|
|
r11 = 0xdd
|
|
r12 = 0xcd
|
|
r13 = 0x90
|
|
r14 = 0xa1
|
|
r15 = 0xa1
|
|
-- round 8
|
|
r0 = 0x7f
|
|
r1 = 0x2d
|
|
r2 = 0xe9
|
|
r3 = 0x2f
|
|
r4 = 0xdf
|
|
r5 = 0xcd
|
|
r6 = 0xf3
|
|
r7 = 0x26
|
|
r8 = 0x51
|
|
r9 = 0x10
|
|
r10 = 0xdc
|
|
r11 = 0xdd
|
|
r12 = 0x91
|
|
r13 = 0xa0
|
|
r14 = 0xa1
|
|
r15 = 0xa1
|
|
-- round 9
|
|
r0 = 0x3f
|
|
r1 = 0x96
|
|
r2 = 0xdc
|
|
r3 = 0x1f
|
|
r4 = 0x6f
|
|
r5 = 0x66
|
|
r6 = 0x51
|
|
r7 = 0x39
|
|
r8 = 0xdd
|
|
r9 = 0xdc
|
|
r10 = 0x80
|
|
r11 = 0xa1
|
|
r12 = 0xa1
|
|
r13 = 0xa0
|
|
r14 = 0xa9
|
|
r15 = 0x21
|
|
-- round 10
|
|
r0 = 0xbf
|
|
r1 = 0xc9
|
|
r2 = 0x4e
|
|
r3 = 0xad
|
|
r4 = 0x95
|
|
r5 = 0x99
|
|
r6 = 0x2a
|
|
r7 = 0x94
|
|
r8 = 0x81
|
|
r9 = 0xa0
|
|
r10 = 0xb0
|
|
r11 = 0xb1
|
|
r12 = 0xa9
|
|
r13 = 0x20
|
|
r14 = 0xa7
|
|
r15 = 0xa7
|
|
-- round 11
|
|
r0 = 0x7f
|
|
r1 = 0xc6
|
|
r2 = 0xaf
|
|
r3 = 0xfe
|
|
r4 = 0x4a
|
|
r5 = 0xee
|
|
r6 = 0xbd
|
|
r7 = 0x40
|
|
r8 = 0xb1
|
|
r9 = 0xb0
|
|
r10 = 0xb8
|
|
r11 = 0x31
|
|
r12 = 0xa7
|
|
r13 = 0xa6
|
|
r14 = 0x01
|
|
r15 = 0x41
|
|
-- round 12
|
|
r0 = 0x3d
|
|
r1 = 0xc3
|
|
r2 = 0x57
|
|
r3 = 0x55
|
|
r4 = 0x8d
|
|
r5 = 0x7d
|
|
r6 = 0x54
|
|
r7 = 0xaa
|
|
r8 = 0xb9
|
|
r9 = 0x30
|
|
r10 = 0xb6
|
|
r11 = 0xb7
|
|
r12 = 0x01
|
|
r13 = 0x40
|
|
r14 = 0x61
|
|
r15 = 0x61
|
|
-- round 13
|
|
r0 = 0x1e
|
|
r1 = 0x61
|
|
r2 = 0xa1
|
|
r3 = 0x08
|
|
r4 = 0xc4
|
|
r5 = 0xb6
|
|
r6 = 0x28
|
|
r7 = 0x75
|
|
r8 = 0xb7
|
|
r9 = 0xb6
|
|
r10 = 0x10
|
|
r11 = 0x41
|
|
r12 = 0x61
|
|
r13 = 0x60
|
|
r14 = 0x65
|
|
r15 = 0x61
|
|
-- round 14
|
|
r0 = 0xa5
|
|
r1 = 0xba
|
|
r2 = 0x72
|
|
r3 = 0x06
|
|
r4 = 0x60
|
|
r5 = 0x7b
|
|
r6 = 0xb4
|
|
r7 = 0xb8
|
|
r8 = 0x11
|
|
r9 = 0x40
|
|
r10 = 0x70
|
|
r11 = 0x71
|
|
r12 = 0x65
|
|
r13 = 0x60
|
|
r14 = 0x73
|
|
r15 = 0x73
|
|
-- round 15
|
|
r0 = 0xf5
|
|
r1 = 0xfe
|
|
r2 = 0x27
|
|
r3 = 0x16
|
|
r4 = 0x61
|
|
r5 = 0x3f
|
|
r6 = 0xf5
|
|
r7 = 0xbc
|
|
r8 = 0x41
|
|
r9 = 0x70
|
|
r10 = 0x70
|
|
r11 = 0x65
|
|
r12 = 0x61
|
|
r13 = 0x72
|
|
r14 = 0x73
|
|
r15 = 0x21
|
|
pcl = 0x0020
|
|
EOF
|
|
RUN
|
|
|
|
NAME=AVR: des decrypt
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
(regs ;ar 8~:0..16) # show regs r0-r15
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
wx 58940b941b942b943b944b945b946b947b948b949b94ab94bb94cb94db94eb94fb94
|
|
ar r0 = 0xf5
|
|
ar r1 = 0xfe
|
|
ar r2 = 0x27
|
|
ar r3 = 0x16
|
|
ar r4 = 0x61
|
|
ar r5 = 0x3f
|
|
ar r6 = 0xf5
|
|
ar r7 = 0xbc
|
|
ar r8 = 0x41
|
|
ar r9 = 0x70
|
|
ar r10 = 0x70
|
|
ar r11 = 0x65
|
|
ar r12 = 0x61
|
|
ar r13 = 0x72
|
|
ar r14 = 0x73
|
|
ar r15 = 0x21
|
|
.(regs)
|
|
aei
|
|
aes
|
|
echo decrypt?; ar hf
|
|
echo -- round 0; aes; .(regs)
|
|
echo -- round 1; aes; .(regs)
|
|
echo -- round 2; aes; .(regs)
|
|
echo -- round 3; aes; .(regs)
|
|
echo -- round 4; aes; .(regs)
|
|
echo -- round 5; aes; .(regs)
|
|
echo -- round 6; aes; .(regs)
|
|
echo -- round 7; aes; .(regs)
|
|
echo -- round 8; aes; .(regs)
|
|
echo -- round 9; aes; .(regs)
|
|
echo -- round 10; aes; .(regs)
|
|
echo -- round 11; aes; .(regs)
|
|
echo -- round 12; aes; .(regs)
|
|
echo -- round 13; aes; .(regs)
|
|
echo -- round 14; aes; .(regs)
|
|
echo -- round 15; aes; .(regs)
|
|
ar pcl
|
|
EOF
|
|
EXPECT=<<EOF
|
|
r0 = 0xf5
|
|
r1 = 0xfe
|
|
r2 = 0x27
|
|
r3 = 0x16
|
|
r4 = 0x61
|
|
r5 = 0x3f
|
|
r6 = 0xf5
|
|
r7 = 0xbc
|
|
r8 = 0x41
|
|
r9 = 0x70
|
|
r10 = 0x70
|
|
r11 = 0x65
|
|
r12 = 0x61
|
|
r13 = 0x72
|
|
r14 = 0x73
|
|
r15 = 0x21
|
|
decrypt?
|
|
hf = 0x1
|
|
-- round 0
|
|
r0 = 0x5a
|
|
r1 = 0x75
|
|
r2 = 0xb1
|
|
r3 = 0x09
|
|
r4 = 0x90
|
|
r5 = 0xb7
|
|
r6 = 0x78
|
|
r7 = 0x74
|
|
r8 = 0x11
|
|
r9 = 0x40
|
|
r10 = 0x70
|
|
r11 = 0x71
|
|
r12 = 0x65
|
|
r13 = 0x60
|
|
r14 = 0x73
|
|
r15 = 0x73
|
|
-- round 1
|
|
r0 = 0x2d
|
|
r1 = 0x92
|
|
r2 = 0x52
|
|
r3 = 0x04
|
|
r4 = 0xc8
|
|
r5 = 0x79
|
|
r6 = 0x14
|
|
r7 = 0xba
|
|
r8 = 0xb7
|
|
r9 = 0xb6
|
|
r10 = 0x10
|
|
r11 = 0x41
|
|
r12 = 0x61
|
|
r13 = 0x60
|
|
r14 = 0x65
|
|
r15 = 0x61
|
|
-- round 2
|
|
r0 = 0x3e
|
|
r1 = 0xc3
|
|
r2 = 0xab
|
|
r3 = 0xaa
|
|
r4 = 0x4e
|
|
r5 = 0xbe
|
|
r6 = 0xa8
|
|
r7 = 0x55
|
|
r8 = 0xb9
|
|
r9 = 0x30
|
|
r10 = 0xb6
|
|
r11 = 0xb7
|
|
r12 = 0x01
|
|
r13 = 0x40
|
|
r14 = 0x61
|
|
r15 = 0x61
|
|
-- round 3
|
|
r0 = 0xbf
|
|
r1 = 0xc9
|
|
r2 = 0x5f
|
|
r3 = 0xfd
|
|
r4 = 0x85
|
|
r5 = 0xdd
|
|
r6 = 0x7e
|
|
r7 = 0x80
|
|
r8 = 0xb1
|
|
r9 = 0xb0
|
|
r10 = 0xb8
|
|
r11 = 0x31
|
|
r12 = 0xa7
|
|
r13 = 0xa6
|
|
r14 = 0x01
|
|
r15 = 0x41
|
|
-- round 4
|
|
r0 = 0x7f
|
|
r1 = 0xc6
|
|
r2 = 0x8d
|
|
r3 = 0x5e
|
|
r4 = 0x6a
|
|
r5 = 0x66
|
|
r6 = 0x15
|
|
r7 = 0x68
|
|
r8 = 0x81
|
|
r9 = 0xa0
|
|
r10 = 0xb0
|
|
r11 = 0xb1
|
|
r12 = 0xa9
|
|
r13 = 0x20
|
|
r14 = 0xa7
|
|
r15 = 0xa7
|
|
-- round 5
|
|
r0 = 0x3f
|
|
r1 = 0x69
|
|
r2 = 0xec
|
|
r3 = 0x2f
|
|
r4 = 0x9f
|
|
r5 = 0x99
|
|
r6 = 0xa2
|
|
r7 = 0x36
|
|
r8 = 0xdd
|
|
r9 = 0xdc
|
|
r10 = 0x80
|
|
r11 = 0xa1
|
|
r12 = 0xa1
|
|
r13 = 0xa0
|
|
r14 = 0xa9
|
|
r15 = 0x21
|
|
-- round 6
|
|
r0 = 0xbf
|
|
r1 = 0x1e
|
|
r2 = 0xd6
|
|
r3 = 0x1f
|
|
r4 = 0xef
|
|
r5 = 0xce
|
|
r6 = 0xf3
|
|
r7 = 0x19
|
|
r8 = 0x51
|
|
r9 = 0x10
|
|
r10 = 0xdc
|
|
r11 = 0xdd
|
|
r12 = 0x91
|
|
r13 = 0xa0
|
|
r14 = 0xa1
|
|
r15 = 0xa1
|
|
-- round 7
|
|
r0 = 0x75
|
|
r1 = 0xa5
|
|
r2 = 0x6b
|
|
r3 = 0xaf
|
|
r4 = 0xdf
|
|
r5 = 0x4f
|
|
r6 = 0xd1
|
|
r7 = 0x04
|
|
r8 = 0xd1
|
|
r9 = 0x50
|
|
r10 = 0x10
|
|
r11 = 0xdd
|
|
r12 = 0xcd
|
|
r13 = 0x90
|
|
r14 = 0xa1
|
|
r15 = 0xa1
|
|
-- round 8
|
|
r0 = 0x98
|
|
r1 = 0x7a
|
|
r2 = 0x1d
|
|
r3 = 0xff
|
|
r4 = 0x67
|
|
r5 = 0xaf
|
|
r6 = 0xc8
|
|
r7 = 0x2a
|
|
r8 = 0xd1
|
|
r9 = 0xd0
|
|
r10 = 0xd0
|
|
r11 = 0x51
|
|
r12 = 0x01
|
|
r13 = 0xcc
|
|
r14 = 0xcd
|
|
r15 = 0x91
|
|
-- round 9
|
|
r0 = 0x6e
|
|
r1 = 0x95
|
|
r2 = 0x26
|
|
r3 = 0xd5
|
|
r4 = 0xb1
|
|
r5 = 0x75
|
|
r6 = 0x46
|
|
r7 = 0x9d
|
|
r8 = 0xe9
|
|
r9 = 0xc2
|
|
r10 = 0xd0
|
|
r11 = 0xd1
|
|
r12 = 0xd1
|
|
r13 = 0x40
|
|
r14 = 0x01
|
|
r15 = 0xcd
|
|
-- round 10
|
|
r0 = 0x37
|
|
r1 = 0x62
|
|
r2 = 0x19
|
|
r3 = 0x4a
|
|
r4 = 0xf0
|
|
r5 = 0x3a
|
|
r6 = 0x03
|
|
r7 = 0x4e
|
|
r8 = 0x81
|
|
r9 = 0xe8
|
|
r10 = 0xe8
|
|
r11 = 0xc3
|
|
r12 = 0xc1
|
|
r13 = 0xd0
|
|
r14 = 0xd1
|
|
r15 = 0x41
|
|
-- round 11
|
|
r0 = 0x91
|
|
r1 = 0x11
|
|
r2 = 0x2c
|
|
r3 = 0xa5
|
|
r4 = 0xf2
|
|
r5 = 0x35
|
|
r6 = 0x89
|
|
r7 = 0x8d
|
|
r8 = 0x63
|
|
r9 = 0x20
|
|
r10 = 0x80
|
|
r11 = 0xe9
|
|
r12 = 0xe9
|
|
r13 = 0xc2
|
|
r14 = 0xc1
|
|
r15 = 0xd1
|
|
-- round 12
|
|
r0 = 0x62
|
|
r1 = 0x00
|
|
r2 = 0x3e
|
|
r3 = 0x78
|
|
r4 = 0xd9
|
|
r5 = 0x90
|
|
r6 = 0xc4
|
|
r7 = 0x64
|
|
r8 = 0x61
|
|
r9 = 0x62
|
|
r10 = 0x62
|
|
r11 = 0x21
|
|
r12 = 0x81
|
|
r13 = 0xe8
|
|
r14 = 0xe9
|
|
r15 = 0xc3
|
|
-- round 13
|
|
r0 = 0x11
|
|
r1 = 0x08
|
|
r2 = 0xbd
|
|
r3 = 0xbc
|
|
r4 = 0x4e
|
|
r5 = 0x40
|
|
r6 = 0x62
|
|
r7 = 0x1a
|
|
r8 = 0x71
|
|
r9 = 0x64
|
|
r10 = 0x60
|
|
r11 = 0x63
|
|
r12 = 0x73
|
|
r13 = 0x20
|
|
r14 = 0x81
|
|
r15 = 0xe9
|
|
-- round 14
|
|
r0 = 0x00
|
|
r1 = 0x24
|
|
r2 = 0x56
|
|
r3 = 0x7c
|
|
r4 = 0x27
|
|
r5 = 0x20
|
|
r6 = 0x39
|
|
r7 = 0x25
|
|
r8 = 0x71
|
|
r9 = 0x70
|
|
r10 = 0x64
|
|
r11 = 0x61
|
|
r12 = 0x73
|
|
r13 = 0x72
|
|
r14 = 0x21
|
|
r15 = 0x81
|
|
-- round 15
|
|
r0 = 0x41
|
|
r1 = 0x20
|
|
r2 = 0x52
|
|
r3 = 0x69
|
|
r4 = 0x76
|
|
r5 = 0x61
|
|
r6 = 0x6c
|
|
r7 = 0x20
|
|
r8 = 0x41
|
|
r9 = 0x70
|
|
r10 = 0x70
|
|
r11 = 0x65
|
|
r12 = 0x61
|
|
r13 = 0x72
|
|
r14 = 0x73
|
|
r15 = 0x21
|
|
pcl = 0x0022
|
|
EOF
|
|
RUN
|
|
|
|
NAME=AVR: mul
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
wx 019f
|
|
aei
|
|
(mul x y; echo ======== ${x} * ${y} ========; ar r16 = ${x}; ar r17 = ${y}; ar pc = 0; aes; echo r0; ar r0; echo r1; ar r1; echo r16; ar r16; echo r17; ar r17; echo sreg; ar sreg)
|
|
.(mul 42 13)
|
|
.(mul 0xff 0xff)
|
|
.(mul 0 42)
|
|
.(mul 0x10 0x80)
|
|
EOF
|
|
EXPECT=<<EOF
|
|
======== 42 * 13 ========
|
|
r0
|
|
r0 = 0x22
|
|
r1
|
|
r1 = 0x02
|
|
r16
|
|
r16 = 0x2a
|
|
r17
|
|
r17 = 0x0d
|
|
sreg
|
|
sreg = 0x00
|
|
======== 0xff * 0xff ========
|
|
r0
|
|
r0 = 0x01
|
|
r1
|
|
r1 = 0xfe
|
|
r16
|
|
r16 = 0xff
|
|
r17
|
|
r17 = 0xff
|
|
sreg
|
|
sreg = 0x01
|
|
======== 0 * 42 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x00
|
|
r16
|
|
r16 = 0x00
|
|
r17
|
|
r17 = 0x2a
|
|
sreg
|
|
sreg = 0x02
|
|
======== 0x10 * 0x80 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x08
|
|
r16
|
|
r16 = 0x10
|
|
r17
|
|
r17 = 0x80
|
|
sreg
|
|
sreg = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=AVR: muls
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
wx 0102
|
|
aei
|
|
(muls x y; echo ======== ${x} * ${y} ========; ar r16 = ${x}; ar r17 = ${y}; ar pc = 0; aes; echo r0; ar r0; echo r1; ar r1; echo r16; ar r16; echo r17; ar r17; echo sreg; ar sreg)
|
|
.(muls 42 13)
|
|
.(muls 0xff 0xff)
|
|
.(muls 0 42)
|
|
.(muls 0x10 0x80)
|
|
EOF
|
|
EXPECT=<<EOF
|
|
======== 42 * 13 ========
|
|
r0
|
|
r0 = 0x22
|
|
r1
|
|
r1 = 0x02
|
|
r16
|
|
r16 = 0x2a
|
|
r17
|
|
r17 = 0x0d
|
|
sreg
|
|
sreg = 0x00
|
|
======== 0xff * 0xff ========
|
|
r0
|
|
r0 = 0x01
|
|
r1
|
|
r1 = 0x00
|
|
r16
|
|
r16 = 0xff
|
|
r17
|
|
r17 = 0xff
|
|
sreg
|
|
sreg = 0x00
|
|
======== 0 * 42 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x00
|
|
r16
|
|
r16 = 0x00
|
|
r17
|
|
r17 = 0x2a
|
|
sreg
|
|
sreg = 0x02
|
|
======== 0x10 * 0x80 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0xf8
|
|
r16
|
|
r16 = 0x10
|
|
r17
|
|
r17 = 0x80
|
|
sreg
|
|
sreg = 0x01
|
|
EOF
|
|
RUN
|
|
|
|
NAME=AVR: mulsu
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
wx 0103
|
|
aei
|
|
(mulsu x y; echo ======== ${x} * ${y} ========; ar r16 = ${x}; ar r17 = ${y}; ar pc = 0; aes; echo r0; ar r0; echo r1; ar r1; echo r16; ar r16; echo r17; ar r17; echo sreg; ar sreg)
|
|
.(mulsu 42 13)
|
|
.(mulsu 0xff 0xff)
|
|
.(mulsu 0 42)
|
|
.(mulsu 0x10 0x80)
|
|
.(mulsu 13 42)
|
|
.(mulsu 42 0)
|
|
.(mulsu 0x80 0x10)
|
|
EOF
|
|
EXPECT=<<EOF
|
|
======== 42 * 13 ========
|
|
r0
|
|
r0 = 0x22
|
|
r1
|
|
r1 = 0x02
|
|
r16
|
|
r16 = 0x2a
|
|
r17
|
|
r17 = 0x0d
|
|
sreg
|
|
sreg = 0x00
|
|
======== 0xff * 0xff ========
|
|
r0
|
|
r0 = 0x01
|
|
r1
|
|
r1 = 0xff
|
|
r16
|
|
r16 = 0xff
|
|
r17
|
|
r17 = 0xff
|
|
sreg
|
|
sreg = 0x01
|
|
======== 0 * 42 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x00
|
|
r16
|
|
r16 = 0x00
|
|
r17
|
|
r17 = 0x2a
|
|
sreg
|
|
sreg = 0x02
|
|
======== 0x10 * 0x80 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x08
|
|
r16
|
|
r16 = 0x10
|
|
r17
|
|
r17 = 0x80
|
|
sreg
|
|
sreg = 0x00
|
|
======== 13 * 42 ========
|
|
r0
|
|
r0 = 0x22
|
|
r1
|
|
r1 = 0x02
|
|
r16
|
|
r16 = 0x0d
|
|
r17
|
|
r17 = 0x2a
|
|
sreg
|
|
sreg = 0x00
|
|
======== 42 * 0 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x00
|
|
r16
|
|
r16 = 0x2a
|
|
r17
|
|
r17 = 0x00
|
|
sreg
|
|
sreg = 0x02
|
|
======== 0x80 * 0x10 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0xf8
|
|
r16
|
|
r16 = 0x80
|
|
r17
|
|
r17 = 0x10
|
|
sreg
|
|
sreg = 0x01
|
|
EOF
|
|
RUN
|
|
|
|
NAME=AVR: fmul
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
wx 0903
|
|
aei
|
|
(fmul x y; echo ======== ${x} * ${y} ========; ar r16 = ${x}; ar r17 = ${y}; ar pc = 0; aes; echo r0; ar r0; echo r1; ar r1; echo r16; ar r16; echo r17; ar r17; echo sreg; ar sreg)
|
|
.(fmul 42 13)
|
|
.(fmul 0xff 0xff)
|
|
.(fmul 0 42)
|
|
.(fmul 0x10 0x80)
|
|
EOF
|
|
EXPECT=<<EOF
|
|
======== 42 * 13 ========
|
|
r0
|
|
r0 = 0x44
|
|
r1
|
|
r1 = 0x04
|
|
r16
|
|
r16 = 0x2a
|
|
r17
|
|
r17 = 0x0d
|
|
sreg
|
|
sreg = 0x00
|
|
======== 0xff * 0xff ========
|
|
r0
|
|
r0 = 0x02
|
|
r1
|
|
r1 = 0xfc
|
|
r16
|
|
r16 = 0xff
|
|
r17
|
|
r17 = 0xff
|
|
sreg
|
|
sreg = 0x01
|
|
======== 0 * 42 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x00
|
|
r16
|
|
r16 = 0x00
|
|
r17
|
|
r17 = 0x2a
|
|
sreg
|
|
sreg = 0x02
|
|
======== 0x10 * 0x80 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x10
|
|
r16
|
|
r16 = 0x10
|
|
r17
|
|
r17 = 0x80
|
|
sreg
|
|
sreg = 0x00
|
|
EOF
|
|
RUN
|
|
|
|
NAME=AVR: fmuls
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
wx 8103
|
|
aei
|
|
(fmuls x y; echo ======== ${x} * ${y} ========; ar r16 = ${x}; ar r17 = ${y}; ar pc = 0; aes; echo r0; ar r0; echo r1; ar r1; echo r16; ar r16; echo r17; ar r17; echo sreg; ar sreg)
|
|
.(fmuls 42 13)
|
|
.(fmuls 0xff 0xff)
|
|
.(fmuls 0 42)
|
|
.(fmuls 0x10 0x80)
|
|
EOF
|
|
EXPECT=<<EOF
|
|
======== 42 * 13 ========
|
|
r0
|
|
r0 = 0x44
|
|
r1
|
|
r1 = 0x04
|
|
r16
|
|
r16 = 0x2a
|
|
r17
|
|
r17 = 0x0d
|
|
sreg
|
|
sreg = 0x00
|
|
======== 0xff * 0xff ========
|
|
r0
|
|
r0 = 0x02
|
|
r1
|
|
r1 = 0x00
|
|
r16
|
|
r16 = 0xff
|
|
r17
|
|
r17 = 0xff
|
|
sreg
|
|
sreg = 0x00
|
|
======== 0 * 42 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x00
|
|
r16
|
|
r16 = 0x00
|
|
r17
|
|
r17 = 0x2a
|
|
sreg
|
|
sreg = 0x02
|
|
======== 0x10 * 0x80 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0xf0
|
|
r16
|
|
r16 = 0x10
|
|
r17
|
|
r17 = 0x80
|
|
sreg
|
|
sreg = 0x01
|
|
EOF
|
|
RUN
|
|
|
|
NAME=AVR: fmulsu
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
wx 8903
|
|
aei
|
|
(fmulsu x y; echo ======== ${x} * ${y} ========; ar r16 = ${x}; ar r17 = ${y}; ar pc = 0; aes; echo r0; ar r0; echo r1; ar r1; echo r16; ar r16; echo r17; ar r17; echo sreg; ar sreg)
|
|
.(fmulsu 42 13)
|
|
.(fmulsu 0xff 0xff)
|
|
.(fmulsu 0 42)
|
|
.(fmulsu 0x10 0x80)
|
|
.(fmulsu 13 42)
|
|
.(fmulsu 42 0)
|
|
.(fmulsu 0x80 0x10)
|
|
EOF
|
|
EXPECT=<<EOF
|
|
======== 42 * 13 ========
|
|
r0
|
|
r0 = 0x44
|
|
r1
|
|
r1 = 0x04
|
|
r16
|
|
r16 = 0x2a
|
|
r17
|
|
r17 = 0x0d
|
|
sreg
|
|
sreg = 0x00
|
|
======== 0xff * 0xff ========
|
|
r0
|
|
r0 = 0x02
|
|
r1
|
|
r1 = 0xfe
|
|
r16
|
|
r16 = 0xff
|
|
r17
|
|
r17 = 0xff
|
|
sreg
|
|
sreg = 0x01
|
|
======== 0 * 42 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x00
|
|
r16
|
|
r16 = 0x00
|
|
r17
|
|
r17 = 0x2a
|
|
sreg
|
|
sreg = 0x02
|
|
======== 0x10 * 0x80 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x10
|
|
r16
|
|
r16 = 0x10
|
|
r17
|
|
r17 = 0x80
|
|
sreg
|
|
sreg = 0x00
|
|
======== 13 * 42 ========
|
|
r0
|
|
r0 = 0x44
|
|
r1
|
|
r1 = 0x04
|
|
r16
|
|
r16 = 0x0d
|
|
r17
|
|
r17 = 0x2a
|
|
sreg
|
|
sreg = 0x00
|
|
======== 42 * 0 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0x00
|
|
r16
|
|
r16 = 0x2a
|
|
r17
|
|
r17 = 0x00
|
|
sreg
|
|
sreg = 0x02
|
|
======== 0x80 * 0x10 ========
|
|
r0
|
|
r0 = 0x00
|
|
r1
|
|
r1 = 0xf0
|
|
r16
|
|
r16 = 0x80
|
|
r17
|
|
r17 = 0x10
|
|
sreg
|
|
sreg = 0x01
|
|
EOF
|
|
RUN
|
|
|
|
NAME=AVR: adiw
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
aei
|
|
(adiw h l x; echo ======== ${h}:${l} + ${x} ========; wa "adiw r27:r26, ${x}"; pi 1; ar r27 = ${h}; ar r26 = ${l}; ar pc = 0; aes; echo r26; ar r26; echo r27; ar r27; echo sreg; ar sreg)
|
|
.(adiw 0xca 0xfe 0x3f)
|
|
.(adiw 0x0a 0xfe 0x3f)
|
|
.(adiw 0xff 0xff 0x01)
|
|
.(adiw 0x77 0x7e 0x03)
|
|
.(adiw 0x7f 0xfe 0x03)
|
|
.(adiw 0x80 0x00 0x01)
|
|
.(adiw 0x00 0x00 0x00)
|
|
EOF
|
|
EXPECT=<<EOF
|
|
======== 0xca:0xfe + 0x3f ========
|
|
adiw r27:r26, 0x3f
|
|
r26
|
|
r26 = 0x3d
|
|
r27
|
|
r27 = 0xcb
|
|
sreg
|
|
sreg = 0x14
|
|
======== 0x0a:0xfe + 0x3f ========
|
|
adiw r27:r26, 0x3f
|
|
r26
|
|
r26 = 0x3d
|
|
r27
|
|
r27 = 0x0b
|
|
sreg
|
|
sreg = 0x00
|
|
======== 0xff:0xff + 0x01 ========
|
|
adiw r27:r26, 0x01
|
|
r26
|
|
r26 = 0x00
|
|
r27
|
|
r27 = 0x00
|
|
sreg
|
|
sreg = 0x03
|
|
======== 0x77:0x7e + 0x03 ========
|
|
adiw r27:r26, 0x03
|
|
r26
|
|
r26 = 0x81
|
|
r27
|
|
r27 = 0x77
|
|
sreg
|
|
sreg = 0x00
|
|
======== 0x7f:0xfe + 0x03 ========
|
|
adiw r27:r26, 0x03
|
|
r26
|
|
r26 = 0x01
|
|
r27
|
|
r27 = 0x80
|
|
sreg
|
|
sreg = 0x0c
|
|
======== 0x80:0x00 + 0x01 ========
|
|
adiw r27:r26, 0x01
|
|
r26
|
|
r26 = 0x01
|
|
r27
|
|
r27 = 0x80
|
|
sreg
|
|
sreg = 0x14
|
|
======== 0x00:0x00 + 0x00 ========
|
|
adiw r27:r26, 0x00
|
|
r26
|
|
r26 = 0x00
|
|
r27
|
|
r27 = 0x00
|
|
sreg
|
|
sreg = 0x02
|
|
EOF
|
|
RUN
|
|
|
|
NAME=AVR: sbiw
|
|
FILE=malloc://1024
|
|
CMDS=<<EOF
|
|
e asm.arch=avr
|
|
e cfg.bigendian=false
|
|
aei
|
|
(sbiw h l x; echo ======== ${h}:${l} - ${x} ========; wa "sbiw r27:r26, ${x}"; pi 1; ar r27 = ${h}; ar r26 = ${l}; ar pc = 0; aes; echo r26; ar r26; echo r27; ar r27; echo sreg; ar sreg)
|
|
.(sbiw 0xca 0x21 0x3f)
|
|
.(sbiw 0x00 0x10 0x3f)
|
|
.(sbiw 0x80 0x00 0x01)
|
|
.(sbiw 0x80 0x05 0x01)
|
|
.(sbiw 0x00 0x02 0x03)
|
|
.(sbiw 0x00 0x12 0x12)
|
|
EOF
|
|
EXPECT=<<EOF
|
|
======== 0xca:0x21 - 0x3f ========
|
|
sbiw r27:r26, 0x3f
|
|
r26
|
|
r26 = 0xe2
|
|
r27
|
|
r27 = 0xc9
|
|
sreg
|
|
sreg = 0x14
|
|
======== 0x00:0x10 - 0x3f ========
|
|
sbiw r27:r26, 0x3f
|
|
r26
|
|
r26 = 0xd1
|
|
r27
|
|
r27 = 0xff
|
|
sreg
|
|
sreg = 0x15
|
|
======== 0x80:0x00 - 0x01 ========
|
|
sbiw r27:r26, 0x01
|
|
r26
|
|
r26 = 0xff
|
|
r27
|
|
r27 = 0x7f
|
|
sreg
|
|
sreg = 0x18
|
|
======== 0x80:0x05 - 0x01 ========
|
|
sbiw r27:r26, 0x01
|
|
r26
|
|
r26 = 0x04
|
|
r27
|
|
r27 = 0x80
|
|
sreg
|
|
sreg = 0x14
|
|
======== 0x00:0x02 - 0x03 ========
|
|
sbiw r27:r26, 0x03
|
|
r26
|
|
r26 = 0xff
|
|
r27
|
|
r27 = 0xff
|
|
sreg
|
|
sreg = 0x15
|
|
======== 0x00:0x12 - 0x12 ========
|
|
sbiw r27:r26, 0x12
|
|
r26
|
|
r26 = 0x00
|
|
r27
|
|
r27 = 0x00
|
|
sreg
|
|
sreg = 0x02
|
|
EOF
|
|
RUN
|