radare2/test/db/anal/mips_micro
2023-12-22 01:51:42 +01:00

265 lines
9.6 KiB
Plaintext

NAME=micromips on gnu
FILE=-
CMDS=<<EOF
rasm2 -a mips.gnu -b32 -d 22fdd018
rasm2 -a mips.gnu -b32 -c micro -d 22fdd018
EOF
EXPECT=<<EOF
0x18d0fd22
lw t1, 6352(v0)
EOF
RUN
NAME=micromips on cs
FILE=-
CMDS=<<EOF
rasm2 -a mips -b32 -d 22fdd018
?e --
rasm2 -a mips -b32 -c micro -d 22fdd018
?e --
rasm2 -a mips.gnu -b32 -d 22fdd018
?e --
rasm2 -a mips.gnu -b32 -c micro -d 22fdd018
EOF
EXPECT=<<EOF
invalid
--
lw t1, 0x18d0(v0)
--
0x18d0fd22
--
lw t1, 6352(v0)
EOF
RUN
NAME=micromips code block and endian test CAPSTONE
BROKEN=1
FILE=-
CMDS=<<EOF
rasm2 -a mips -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e --
# THIS LINE SEGFAULTS ONLY IN THE CI
# rasm2 -e -a mips -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
EOF
EXPECT=<<EOF
0x00000000 4 4fe522fd invalid
0x00000004 4 d01840e4 sb a2, -0x1bc0(s0)
0x00000008 2 0007 addu16 a2, s0, s0
0x0000000a 4 ae920e25 slti s5, t6, 0x250e
0x0000000e 4 41a49860 invalid
0x00000012 2 cc06 addu16 a1, a2, a0
0x00000014 2 3084 movep a1, a2, zero, v1
0x00000016 2 7090 unaligned
--
0x00000000 2 4fe5 addiusp -0x38
0x00000002 4 22fdd018 swm32 s0, s1, s2, s3, s4, s5, s6, ra, 0x18(sp)
0x00000006 4 40e40007 beqzc a0, 0xe
0x0000000a 2 ae92 bnez16 a1, 0x24
0x0000000c 2 0e25 move s1, a1
0x0000000e 4 41a49860 lui a0, 0x9860
0x00000012 2 cc06 b16 0xc
0x00000014 4 30847090 addiu a0, a0, 0x7090
EOF
RUN
NAME=micromips code block and endian test GNU
FILE=-
CMDS=<<EOF
rasm2 -a mips.gnu -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e --
rasm2 -e -a mips.gnu -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
EOF
EXPECT=<<EOF
0x00000000 2 4fe5 0xe54f
0x00000002 4 22fdd018 lw t1, 6352(v0)
0x00000006 2 40e4 0xe440
0x00000008 2 0007 addu a2, s0, s0
0x0000000a 4 ae920e25 slti s5, t6, 9486
0x0000000e 2 41a4 0xa441
0x00000010 4 9860cc06 lwl a0, 1740(t8)
0x00000014 2 3084 movep a1,a2, zero, v1
0x00000016 2 7090 slti v1, s0, 0
--
0x00000000 2 4fe5 addiu sp, sp, -56
0x00000002 4 22fdd018 swm s0-s6,ra, 24(sp)
0x00000006 4 40e40007 beqzc a0, 0x00000019
0x0000000a 2 ae92 bnez a1, 0x00000031
0x0000000c 2 0e25 move s1, a1
0x0000000e 4 41a49860 lui a0, 0x9860
0x00000012 2 cc06 b 0x00000021
0x00000014 4 30847090 addiu a0, a0, 28816
EOF
RUN
NAME=both
BROKEN=1
FILE=-
CMDS=<<EOF
rasm2 -a mips -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e gnu
rasm2 -a mips.gnu -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e cs
rasm2 -e -a mips -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e gnu
rasm2 -e -a mips.gnu -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e cs 32bit
rasm2 -e -a mips -b32 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e gnu 32bit
rasm2 -e -a mips.gnu -b32 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
EOF
EXPECT=<<EOF
0x00000000 4 4fe522fd invalid
0x00000004 4 d01840e4 sb a2, -0x1bc0(s0)
0x00000008 2 0007 addu16 a2, s0, s0
0x0000000a 4 ae920e25 slti s5, t6, 0x250e
0x0000000e 4 41a49860 invalid
0x00000012 2 cc06 addu16 a1, a2, a0
0x00000014 2 3084 movep a1, a2, zero, v1
0x00000016 2 7090 unaligned
gnu
0x00000000 2 4fe5 0xe54f
0x00000002 4 22fdd018 lw t1, 6352(v0)
0x00000006 2 40e4 0xe440
0x00000008 2 0007 addu a2, s0, s0
0x0000000a 4 ae920e25 slti s5, t6, 9486
0x0000000e 2 41a4 0xa441
0x00000010 4 9860cc06 lwl a0, 1740(t8)
0x00000014 2 3084 movep a1,a2, zero, v1
0x00000016 2 7090 unaligned
cs
0x00000000 2 4fe5 addiusp -0x38
0x00000002 4 22fdd018 swm32 s0, s1, s2, s3, s4, s5, s6, ra, 0x18(sp)
0x00000006 4 40e40007 beqzc a0, 0xe
0x0000000a 2 ae92 bnez16 a1, 0x24
0x0000000c 2 0e25 move s1, a1
0x0000000e 4 41a49860 lui a0, 0x9860
0x00000012 2 cc06 b16 0xc
0x00000014 4 30847090 addiu a0, a0, 0x7090
gnu
0x00000000 2 4fe5 addiu sp, sp, -56
0x00000002 4 22fdd018 swm s0-s6,ra, 24(sp)
0x00000006 4 40e40007 beqzc a0, 0x00000019
0x0000000a 2 ae92 bnez a1, 0x00000031
0x0000000c 2 0e25 move s1, a1
0x0000000e 4 41a49860 lui a0, 0x9860
0x00000012 2 cc06 b 0x00000021
0x00000014 4 30847090 addiu a0, a0, 28816
cs 32bit
0x00000000 2 4fe5 addiusp -0x38
0x00000002 4 22fdd018 swm32 s0, s1, s2, s3, s4, s5, s6, ra, 0x18(sp)
0x00000006 4 40e40007 beqzc a0, 0xe
0x0000000a 2 ae92 bnez16 a1, 0x24
0x0000000c 2 0e25 move s1, a1
0x0000000e 4 41a49860 lui a0, 0x9860
0x00000012 2 cc06 b16 0xc
0x00000014 4 30847090 addiu a0, a0, 0x7090
gnu 32bit
0x00000000 2 4fe5 addiu sp, sp, -56
0x00000002 4 22fdd018 swm s0-s6,ra, 24(sp)
0x00000006 4 40e40007 beqzc a0, 0x00000019
0x0000000a 2 ae92 bnez a1, 0x00000031
0x0000000c 2 0e25 move s1, a1
0x0000000e 4 41a49860 lui a0, 0x9860
0x00000012 2 cc06 b 0x00000021
0x00000014 4 30847090 addiu a0, a0, 28816
EOF
RUN
NAME=micromips align
FILE=-
CMDS=<<EOF
-a mips
-e asm.cpu=micro
-e cfg.bigendian=true
-b 16
wx 41bc0002339c821f033ce1504fedff3c801cfb9d0010cbe96e8d45d9308000054be9470a
pd 10
EOF
EXPECT=<<EOF
0x00000000 41bc0002 lui gp, 2
0x00000004 339c821f addiu gp, gp, -0x7de1
0x00000008 033ce150 addu gp, gp, t9
0x0000000c 4fed addiusp -0x28
0x0000000e ff3c801c lw t9, -0x7fe4(gp)
0x00000012 fb9d0010 sw gp, 0x10(sp)
0x00000016 cbe9 sw ra, 0x24(sp)
0x00000018 6e8d addiur1sp a1, 0x18
0x0000001a 45d9 jalr t9
0x0000001c 30800005 addiu a0, zero, 5
EOF
RUN
NAME=micromips align
FILE=-
CMDS=<<EOF
-a mips.gnu
-e asm.cpu=micro
-e cfg.bigendian=true
-b 16
wx 41bc0002339c821f033ce1504fedff3c801cfb9d0010cbe96e8d45d9308000054be9470a
pd 10
EOF
EXPECT=<<EOF
0x00000000 41bc0002 lui gp, 0x2
0x00000004 339c821f addiu gp, gp, -32225
0x00000008 033ce150 addu gp, gp, t9
0x0000000c 4fed addiu sp, sp, -40
0x0000000e ff3c801c lw t9, -32740(gp)
0x00000012 fb9d0010 sw gp, 16(sp)
0x00000016 cbe9 sw ra, 36(sp)
0x00000018 6e8d addiu a1, sp, 24
0x0000001a 45d9 jalr t9
0x0000001c 30800005 li a0, 5
EOF
RUN
NAME=micromips align
FILE=bins/elf/micromips.elf
CMDS=<<EOF
pd 10
pd 10
EOF
EXPECT=<<EOF
;-- section..text:
;-- main:
;-- entry0:
;-- _ftext:
0x004000d0 41bc0002 lui gp, 2 ; [04] -r-x section size 512 named .text
0x004000d4 339c821f addiu gp, gp, -0x7de1
0x004000d8 033ce150 addu gp, gp, t9
0x004000dc 4fed addiusp -0x28
0x004000de ff3c801c lw t9, -0x7fe4(gp) ; [0x41030c:4]=0x400221
0x004000e2 fb9d0010 sw gp, 0x10(sp)
0x004000e6 cbe9 sw ra, 0x24(sp)
0x004000e8 6e8d addiur1sp a1, 0x18
0x004000ea 45d9 jalr t9
0x004000ec 30800005 addiu a0, zero, 5
;-- section..text:
;-- main:
;-- entry0:
;-- _ftext:
0x004000d0 41bc0002 lui gp, 2 ; [04] -r-x section size 512 named .text
0x004000d4 339c821f addiu gp, gp, -0x7de1
0x004000d8 033ce150 addu gp, gp, t9
0x004000dc 4fed addiusp -0x28
0x004000de ff3c801c lw t9, -0x7fe4(gp) ; [0x41030c:4]=0x400221
0x004000e2 fb9d0010 sw gp, 0x10(sp)
0x004000e6 cbe9 sw ra, 0x24(sp)
0x004000e8 6e8d addiur1sp a1, 0x18
0x004000ea 45d9 jalr t9
0x004000ec 30800005 addiu a0, zero, 5
EOF
RUN
NAME=twobytes
FILE=--
CMDS=<<EOF
!!rasm2 -a mips -b16 -e -c micro -d '4fe5'
!!rasm2 -a mips.gnu -b16 -e -c micro -d '4fe5'
EOF
EXPECT=<<EOF
addiusp -0x38
addiu sp, sp, -56
EOF
RUN