mirror of
https://github.com/rizinorg/rizin
synced 2026-08-22 20:26:16 -04:00
727 lines
35 KiB
Text
727 lines
35 KiB
Text
NAME=c166: checking bitness writing (asm.bits) and instruction length
|
||
FILE=malloc://32
|
||
CMDS=<<EOF
|
||
e asm.arch=c166
|
||
e asm.bits
|
||
wx 0012 @ 0
|
||
wx 3B @ 2
|
||
wx 6034 @ 3
|
||
ao 3~size
|
||
wx 0012 @ 0
|
||
wx 3B00 @ 2
|
||
wx 6034 @ 4
|
||
ao 3~size
|
||
wx 6035 @ 0
|
||
wx 0012 @ 2
|
||
wx 0012 @ 4
|
||
ao 3~size
|
||
wx 2056 @ 0
|
||
wx 0012 @ 2
|
||
wx 3B @ 4
|
||
ao 3~size
|
||
wx 0156 @ 0
|
||
wx 0012 @ 2
|
||
wx 0012 @ 4
|
||
ao 3~size
|
||
wx 645d203d @ 0
|
||
pD 4
|
||
e asm.bytes=true
|
||
wx 0012603488560D080B7820560F2440122DFA081208340856 @ 0
|
||
pdq 12
|
||
ao 12~size
|
||
EOF
|
||
EXPECT=<<EOF
|
||
16
|
||
size: 2
|
||
size: 2
|
||
size: 4
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
0x00000000 and 0xfe00:0x3d20, 0xfeba
|
||
0x00000000 0012 add r1, r2
|
||
0x00000002 6034 and r3, r4
|
||
0x00000004 8856 mov [-r6], r5
|
||
0x00000006 0d08 jmpr cc_UC, 0x000018
|
||
0x00000008 0b78 mul r7, r8
|
||
0x0000000a 2056 sub r5, r6
|
||
0x0000000c 0f24 bset 0xfd48.0
|
||
0x0000000e 4012 cmp r1, r2
|
||
0x00000010 2dfa jmpr cc_Z/EQ, 0x000006
|
||
0x00000012 0812 add r1, #2
|
||
0x00000014 0834 add r3, #4
|
||
0x00000016 0856 add r5, #6
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
size: 2
|
||
EOF
|
||
RUN
|
||
|
||
NAME=c166: checking analysis information for coverage
|
||
FILE=malloc://32
|
||
CMDS=<<EOF
|
||
e asm.arch=c166
|
||
wx AB01 @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,reg,description
|
||
echo
|
||
wx EB20 @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx 5911 @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx 0C01 @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx 2C01 @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx A402102c @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx 8402102c @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx A202102c @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx B202102c @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx 8202102c @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx 9202102c @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx 9B02102c @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
wx E202102c @ 0
|
||
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
|
||
echo
|
||
EOF
|
||
EXPECT=<<EOF
|
||
opcode: calli cc_UC, [r1]
|
||
mnemonic: calli
|
||
description: Call indirect subroutine if condition is met
|
||
size: 2
|
||
type: ircall
|
||
reg: r1
|
||
fail: 0x00000002
|
||
|
||
opcode: retp 0xfe40
|
||
mnemonic: retp
|
||
description: Return from intra-segment subroutine and pop direct word register from system stack
|
||
refptr: 0
|
||
size: 2
|
||
type: ret
|
||
stackop: get
|
||
stackptr: 4
|
||
|
||
opcode: xorb rh0, #0x0001
|
||
mnemonic: xorb
|
||
refptr: 0
|
||
size: 2
|
||
type: xor
|
||
|
||
opcode: rol r0, r1
|
||
mnemonic: rol
|
||
refptr: 0
|
||
size: 2
|
||
type: rol
|
||
|
||
opcode: ror r0, r1
|
||
mnemonic: ror
|
||
refptr: 0
|
||
size: 2
|
||
type: ror
|
||
|
||
opcode: movb [r2], 0xfe00:0x2c10
|
||
mnemonic: movb
|
||
refptr: 0
|
||
size: 4
|
||
type: mov
|
||
|
||
opcode: mov [r2], 0xfe00:0x2c10
|
||
mnemonic: mov
|
||
refptr: 0
|
||
size: 4
|
||
type: mov
|
||
|
||
opcode: cmpd1 r2, 0xfe00:0x2c10
|
||
mnemonic: cmpd1
|
||
refptr: 0
|
||
size: 4
|
||
type: cmp
|
||
|
||
opcode: cmpd2 r2, 0xfe00:0x2c10
|
||
mnemonic: cmpd2
|
||
refptr: 0
|
||
size: 4
|
||
type: cmp
|
||
|
||
opcode: cmpi1 r2, 0xfe00:0x2c10
|
||
mnemonic: cmpi1
|
||
refptr: 0
|
||
size: 4
|
||
type: cmp
|
||
|
||
opcode: cmpi2 r2, 0xfe00:0x2c10
|
||
mnemonic: cmpi2
|
||
refptr: 0
|
||
size: 4
|
||
type: cmp
|
||
|
||
opcode: trap #0x0008
|
||
mnemonic: trap
|
||
description: Call interrupt service routine via immediate trap number
|
||
refptr: 0
|
||
size: 2
|
||
type: trap
|
||
fail: 0x00000002
|
||
stackop: inc
|
||
stackptr: 6
|
||
|
||
opcode: pcall 0xfe04, 0x2c10
|
||
mnemonic: pcall
|
||
description: Push direct word register onto system stack and call absolute subroutine
|
||
refptr: 0
|
||
size: 4
|
||
type: ucall
|
||
fail: 0x00000004
|
||
stackop: inc
|
||
stackptr: 4
|
||
|
||
EOF
|
||
RUN
|
||
|
||
NAME=C166 check error coverage
|
||
FILE=bins/omf/omf166/measure
|
||
CMDS=<<EOF
|
||
e asm.arch=c166
|
||
e asm.bytes=true
|
||
e cfg.bigendian=true
|
||
wx E202102c @ 0
|
||
EOF
|
||
EXPECT=
|
||
REGEXP_FILTER_ERR=<<EOF
|
||
ERROR:.+
|
||
EOF
|
||
EXPECT_ERR=<<EOF
|
||
ERROR: core: cannot change to big endian (arch 'c166' supports only little endian)
|
||
ERROR: Could not write hexpair 'E202102c' at 0
|
||
EOF
|
||
RUN
|
||
|
||
NAME=C166 measure binary file iA
|
||
FILE=bins/omf/omf166/measure
|
||
CMDS=<<EOF
|
||
e asm.arch=c166
|
||
e asm.bytes=true
|
||
iA
|
||
echo
|
||
iS
|
||
echo
|
||
aaa
|
||
pd 150
|
||
echo
|
||
pd 21 @ 0x00c001e6
|
||
echo
|
||
pd @ 0x00c018da
|
||
echo
|
||
pdf @ 0x00c013b0
|
||
echo
|
||
pdf @ 0x00c0168a
|
||
EOF
|
||
EXPECT=<<EOF
|
||
offset size arch bits machine big_endian
|
||
------------------------------------------------------------------------------------
|
||
0x00000000 123551 c166 16 Siemens/Infineon C166 family microcontroller false
|
||
|
||
paddr size vaddr vsize align perm name type flags
|
||
-------------------------------------------------------------------------------
|
||
0x00000000 0x250 0x00c0168a 0x250 0x0 -rw- PR_MCOMMAND_FCODE
|
||
0x00000000 0x6f 0x00c01e4c 0x6f 0x0 -r-- HC_MCOMMAND_HCONST
|
||
0x00000000 0x45a 0x00c01230 0x45a 0x0 -rw- PR_MEASURE_FCODE
|
||
0x00000000 0x426 0x00c01a26 0x426 0x0 -r-- HC_MEASURE_HCONST
|
||
0x00000000 0x1b 0x00010240 0x1b 0x0 -rw- ND0_MEASURE_NDATA0
|
||
0x00000000 0x2010 0x0001025c 0x2010 0x0 -rw- HD0_MEASURE_HDATA0
|
||
0x00000000 0x3 0x0000fd00 0x3 0x0 -rw- BI0_MEASURE_BIT0
|
||
0x00000000 0x92 0x00c018da 0x92 0x0 -rw- PR_GETLINE_FCODE
|
||
0x00000000 0x52 0x00c0196c 0x52 0x0 -rw- PR_PUTCHAR_FCODE
|
||
0x00000000 0xc 0x00c0001c 0xc 0x0 -rw- PR_GETKEY_FCODE
|
||
0x00000000 0x8 0x00c00074 0x8 0x0 -rw- PR_TRAPS_FCODE
|
||
0x00000000 0x200 0x00010000 0x200 0x0 -rw- C_USERSTACK_NDATA
|
||
0x00000000 0x20 0x00010200 0x20 0x0 -rw- C_USERSTACK1_NDATA
|
||
0x00000000 0x20 0x00010220 0x20 0x0 -rw- C_USERSTACK2_NDATA
|
||
0x00000000 0x200 0x0000f600 0x200 0x0 -rw- C_SYSSTACK_IDATA
|
||
0x00000000 0x15e 0x00c00084 0x15e 0x0 -rw- C_STARTUP_CODE_ICODE
|
||
0x00000000 0xb7c 0x00c001e2 0xb7c 0x0 -rw- C_LIB_CODE_FCODE
|
||
0x00000000 0x4d2 0x00c00d5e 0x4d2 0x0 -rw- PR_SCANF_FCODE
|
||
0x00000000 0x5a 0x00c01ebc 0x5a 0x0 -r-- HC__PRNFMT_HCONST
|
||
0x00000000 0x30 0x00c00044 0x30 0x0 -r-- C_LIB_NCONST_NCONST
|
||
0x00000000 0x1a 0x00c019ec 0x1a 0x0 -rw- PR_ISSPACE_FCODE
|
||
0x00000000 0x18 0x00c01a06 0x18 0x0 -rw- PR_TOUPPER_FCODE
|
||
0x00000000 0x2e 0x00c019be 0x2e 0x0 -rw- PR_GETCHAR_FCODE
|
||
0x00000000 0x1 0x0001025b 0x1 0x0 -rw- ND0_GETCHAR_NDATA0
|
||
0x00000000 0x8 0x00c01a1e 0x8 0x0 -rw- PR_UNGET_FCODE
|
||
0x00000000 0x2 0x00c00004 0x2 0x0 -r-- C_INITSEC_UNKNOWN
|
||
0x00000000 0x18 0x00c0002c 0x18 0x0 -r-- C_CLRMEMSEC_UNKNOWN
|
||
|
||
;-- int.RESET:
|
||
/ entry0();
|
||
\ ,=< 0x00c00000 fac08400 jmps ?C_RESET ; sym.a166_FAR._C_STARTUP
|
||
\ | ; 0xc00084
|
||
| ;-- section.C_INITSEC_UNKNOWN:
|
||
| 0x00c00004 0000 add r0, r0 ; [25] -r-- section size 2 named C_INITSEC_UNKNOWN
|
||
| 0x00c00006 ffff bset r15.15
|
||
/ sym.isr_vec_0x8();
|
||
\ | 0x00c00008 fac07400 jmps NMI_trap ; 0xc00074 ; "\r\xff\r\xff\r\xff\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
|
||
| 0x00c0000c ffff bset r15.15
|
||
| 0x00c0000e ffff bset r15.15
|
||
/ sym.isr_vec_0x10();
|
||
\ | 0x00c00010 fac07600 jmps STKOF_trap ; 0xc00076 ; "\r\xff\r\xff\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
|
||
| 0x00c00014 ffff bset r15.15
|
||
| 0x00c00016 ffff bset r15.15
|
||
/ sym.isr_vec_0x18();
|
||
\ | 0x00c00018 fac07800 jmps STKUF_trap ; 0xc00078 ; "\r\xff\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
|
||
@| ; CALL XREFS from main @ 0xc01550, 0xc01614
|
||
@| ; CALL XREF from getline @ 0xc018ea
|
||
@| ; CALL XREF from sym.getchar @ 0xc019d2
|
||
@| ;-- getkey:
|
||
@| ;-- section.PR_GETKEY_FCODE:
|
||
@| ;-- _getkey:
|
||
/ _getkey();
|
||
| @=-> 0x00c0001c 9ab7fe70 jnb S0RIC.7, _getkey ; Getkey.c:22 ; 0xc0001c ; [09] -rw- section size 12 named PR_GETKEY_FCODE
|
||
| | 0x00c00020 f2f4b2fe mov r4, 0xfe06:0x3eb2 ; Getkey.c:26
|
||
| | 0x00c00024 7eb7 bclr S0RIC.7 ; Getkey.c:27
|
||
\ | 0x00c00026 db00 rets ; Getkey.c:28
|
||
/ sym.isr_vec_0x28();
|
||
\ ,==< 0x00c00028 fac07a00 jmps Class_B_trap ; 0xc0007a ; "\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
|
||
|| ;-- section.C_CLRMEMSEC_UNKNOWN:
|
||
|| 0x00c0002c 1a800400 bfldh P0L, #0x00, #0x04 ; [26] -r-- section size 24 named C_CLRMEMSEC_UNKNOWN
|
||
|| 0x00c00030 40c2 cmp r12, r2
|
||
|| 0x00c00032 0fa0 bset T2CON.0
|
||
|| 0x00c00034 04005cc2 add 0xfe06:0x025c, DPP0
|
||
|| 0x00c00038 03000000 addb DPP0, 0xfe00:0x0000
|
||
|| 0x00c0003c 0080 add r8, r0
|
||
|| 0x00c0003e 04005bc2 add 0xfe06:0x025b, DPP0
|
||
|| 0x00c00042 0000 add r0, r0
|
||
|| ;-- section.C_LIB_NCONST_NCONST:
|
||
|| 0x00c00044 0000 add r0, r0 ; [19] -r-- section size 48 named C_LIB_NCONST_NCONST
|
||
|| 0x00c00046 803f cmpi1 r15, #0x03
|
||
|| 0x00c00048 0000 add r0, r0
|
||
|| 0x00c0004a 2041 sub r4, r1
|
||
|| 0x00c0004c 0000 add r0, r0
|
||
|| 0x00c0004e c842 mov [r4], [r2]
|
||
|| 0x00c00050 0000 add r0, r0
|
||
|| 0x00c00052 7a440040 bxor 0xfd88.4, section.BI0_MEASURE_BIT0
|
||
|| 0x00c00056 1c46 rol r6, #0x04
|
||
|| 0x00c00058 0050 add r5, r0
|
||
|| 0x00c0005a c3470024 CoSTORE r4, 0xffde
|
||
|| 0x00c0005e 74498096 or 0xfe04:0x1680, CC9
|
||
|| 0x00c00062 184b addc r4, [r3]
|
||
|| 0x00c00064 20bc sub r11, r12
|
||
|| 0x00c00066 be4c bclr 0xfd98.11
|
||
|| 0x00c00068 ca1b0e5a calla- cc_NUSR1, 0xc05a0e ; 0x5a0e
|
||
|| 0x00c0006c 1cc2 rol r2, #0x0c
|
||
|| 0x00c0006e 5367aec5 xorb PECC7, 0xfe06:0x05ae
|
||
|| 0x00c00072 9d74 jmpr cc_NC/UGE, 0xc0015c ; sym.a166_NEAR.RepeatInit+0x2
|
||
@|| ; CODE XREF from sym.isr_vec_0x8 @ 0xc00008
|
||
@|| ;-- section.PR_TRAPS_FCODE:
|
||
/ NMI_trap();
|
||
\ @==-> 0x00c00074 0dff jmpr cc_UC, NMI_trap ; Traps.c:24 ; [10] -rw- section size 8 named PR_TRAPS_FCODE
|
||
@|| ; CODE XREF from sym.isr_vec_0x10 @ 0xc00010
|
||
/ STKOF_trap();
|
||
\ @==-> 0x00c00076 0dff jmpr cc_UC, STKOF_trap ; Traps.c:33
|
||
@|| ; CODE XREF from sym.isr_vec_0x18 @ 0xc00018
|
||
/ STKUF_trap();
|
||
\ @==-> 0x00c00078 0dff jmpr cc_UC, STKUF_trap ; Traps.c:42
|
||
@|| ; CODE XREF from sym.isr_vec_0x28 @ 0xc00028
|
||
/ Class_B_trap();
|
||
\ @`--> 0x00c0007a 0dff jmpr cc_UC, Class_B_trap ; Traps.c:56
|
||
| 0x00c0007c ffff bset r15.15
|
||
| 0x00c0007e ffff bset r15.15
|
||
/ sym.isr_vec_0x80();
|
||
\ | 0x00c00080 fac08012 jmps timer0 ; 0xc01280
|
||
| ; CODE XREF from entry0 @ 0xc00000
|
||
| ;-- C_RESET:
|
||
| ;-- section.C_STARTUP_CODE_ICODE:
|
||
| ;-- a166_FAR.?C_STARTUP:
|
||
/ ?C_RESET();
|
||
| `-> 0x00c00084 a55aa5a5 diswdt ; START_V2.A66:1453 ; [15] -rw- section size 350 named C_STARTUP_CODE_ICODE
|
||
| 0x00c00088 d180 extr #1 ; START_V2.A66:1492
|
||
| 0x00c0008a e6ea0000 mov 0xf1d4, #0x0000 ; START_V2.A66:1493
|
||
| 0x00c0008e e6f08400 mov r0, #0x0084 ; START_V2.A66:1500
|
||
| 0x00c00092 f6f000ee mov 0xfe06:0x2e00, r0 ; START_V2.A66:1501
|
||
| 0x00c00096 e000 mov r0, #0x00 ; START_V2.A66:1506
|
||
| 0x00c00098 f6f002ee mov 0xfe06:0x2e02, r0 ; START_V2.A66:1507
|
||
| 0x00c0009c e6f06450 mov r0, #0x5064 ; START_V2.A66:1514
|
||
| 0x00c000a0 f6f010ee mov 0xfe06:0x2e10, r0 ; START_V2.A66:1515
|
||
| 0x00c000a4 e6f02100 mov r0, #0x0021 ; START_V2.A66:1518
|
||
| 0x00c000a8 f6f012ee mov 0xfe06:0x2e12, r0 ; START_V2.A66:1519
|
||
| 0x00c000ac d180 extr #1 ; START_V2.A66:1651
|
||
| 0x00c000ae e6e88978 mov 0xf1d0, #0x7889 ; START_V2.A66:1652
|
||
| 0x00c000b2 e6d50000 mov FOCON, #0x0000 ; START_V2.A66:1657
|
||
| 0x00c000b6 e60b00f8 mov STKUN, #0xf800 ; START_V2.A66:1660
|
||
| 0x00c000ba e60a0cf6 mov STKOV, #0xf60c ; START_V2.A66:1661
|
||
| 0x00c000be e60900f8 mov SP, #0xf800 ; START_V2.A66:1662
|
||
| 0x00c000c2 e6860000 mov BUSCON0, #0x0000 ; START_V2.A66:1663
|
||
| 0x00c000c6 e6000400 mov DPP0, #0x0004 ; START_V2.A66:1672
|
||
| 0x00c000ca e6010500 mov DPP1, #0x0005 ; START_V2.A66:1674
|
||
| 0x00c000ce e6020003 mov DPP2, #0x0300 ; START_V2.A66:1675
|
||
| 0x00c000d2 e60820fc mov CP, #0xfc20 ; START_V2.A66:1679
|
||
| 0x00c000d6 b54ab5b5 einit ; START_V2.A66:1686
|
||
| 0x00c000da 1a880203 bfldh PSW, #0x03, #0x02 ; START_V2.A66:1690
|
||
| 0x00c000de e6f02002 mov r0, #0x0220 ; START_V2.A66:1691
|
||
| 0x00c000e2 1a880303 bfldh PSW, #0x03, #0x03 ; START_V2.A66:1695
|
||
| 0x00c000e6 e6f04002 mov r0, #0x0240 ; START_V2.A66:1696
|
||
| 0x00c000ea 1a880003 bfldh PSW, #0x03, #0x00 ; START_V2.A66:1700
|
||
\ 0x00c000ee e6f00002 mov r0, #0x0200 ; START_V2.A66:1703
|
||
/ sym.a166_NEAR.Clr_Memory();
|
||
| 0x00c000f2 e6f9c000 mov r9, #0x00c0 ; START_V2.A66:1755
|
||
| 0x00c000f6 e6f82c00 mov r8, #0x002c ; START_V2.A66:1756
|
||
| 0x00c000fa f018 mov r1, r8 ; START_V2.A66:1757
|
||
| 0x00c000fc 7019 or r1, r9 ; START_V2.A66:1758
|
||
\ ,=< 0x00c000fe 2d29 jmpr cc_Z/EQ, sym.a166_NEAR.EndClear ; START_V2.A66:1759
|
||
/ sym.a166_NEAR.RepeatClear();
|
||
| | 0x00c00100 e005 mov r5, #0x00 ; START_V2.A66:1765
|
||
| | 0x00c00102 dc09 exts r9, #1 ; START_V2.A66:1766
|
||
| | 0x00c00104 9828 mov r2, [r8+] ; START_V2.A66:1767
|
||
| | 0x00c00106 2d25 jmpr cc_Z/EQ, sym.a166_NEAR.EndClear ; START_V2.A66:1768
|
||
| | 0x00c00108 f032 mov r3, r2 ; START_V2.A66:1769
|
||
| | 0x00c0010a dc09 exts r9, #1 ; START_V2.A66:1770
|
||
| | 0x00c0010c 9848 mov r4, [r8+] ; START_V2.A66:1771
|
||
| | 0x00c0010e aaf21be0 jbc r2.14, sym.a166_NEAR.ClearNear ; START_V2.A66:1772 ; 0xc00148
|
||
\ | 0x00c00112 aaf20ef0 jbc r2.15, sym.a166_NEAR.ClearFar ; START_V2.A66:1773 ; 0xc00132
|
||
/ sym.a166_NEAR.ClearBit();
|
||
| | 0x00c00116 f034 mov r3, r4 ; START_V2.A66:1775
|
||
| | 0x00c00118 7c33 shr r3, #0x03 ; START_V2.A66:1776
|
||
| | 0x00c0011a 0ef3 bclr r3.0 ; START_V2.A66:1777
|
||
| | 0x00c0011c 06f300fd add r3, #section.BI0_MEASURE_BIT0 ; START_V2.A66:1778
|
||
| | 0x00c00120 e015 mov r5, #0x01 ; START_V2.A66:1779
|
||
| | 0x00c00122 4c54 shl r5, r4 ; START_V2.A66:1780
|
||
| | 0x00c00124 9150 cpl r5 ; START_V2.A66:1781
|
||
| | 0x00c00126 685b and r5, [r3] ; START_V2.A66:1782
|
||
| | 0x00c00128 b853 mov [r3], r5 ; START_V2.A66:1783
|
||
| | 0x00c0012a 0841 add r4, #1 ; START_V2.A66:1784
|
||
| | 0x00c0012c 2821 sub r2, #1 ; START_V2.A66:1785
|
||
| | 0x00c0012e 3df3 jmpr cc_NZ/NE, sym.a166_NEAR.ClearBit ; START_V2.A66:1786
|
||
\ | 0x00c00130 0de7 jmpr cc_UC, sym.a166_NEAR.RepeatClear ; START_V2.A66:1787
|
||
| ; DATA XREF from sym.a166_NEAR.RepeatClear @ 0xc00112
|
||
/ sym.a166_NEAR.ClearFar();
|
||
| | 0x00c00132 dc09 exts r9, #1 ; START_V2.A66:1789
|
||
\ | 0x00c00134 9838 mov r3, [r8+] ; START_V2.A66:1790
|
||
/ sym.a166_NEAR.RepClearFar();
|
||
| | 0x00c00136 dc44 extp r4, #1 ; START_V2.A66:1795
|
||
| | 0x00c00138 b9a3 movb [r3], rl5 ; START_V2.A66:1796
|
||
| | 0x00c0013a 0831 add r3, #1 ; START_V2.A66:1797
|
||
| | 0x00c0013c 1840 addc r4, #0 ; START_V2.A66:1798
|
||
| | 0x00c0013e 76f300c0 or r3, #0xc000 ; START_V2.A66:1799
|
||
| | 0x00c00142 2821 sub r2, #1 ; START_V2.A66:1800
|
||
| | 0x00c00144 7df8 jmpr cc_NN, sym.a166_NEAR.RepClearFar ; START_V2.A66:1801
|
||
\ | 0x00c00146 0ddc jmpr cc_UC, sym.a166_NEAR.RepeatClear ; START_V2.A66:1802
|
||
| ; DATA XREF from sym.a166_NEAR.RepeatClear @ 0xc0010e
|
||
/ sym.a166_NEAR.ClearNear();
|
||
| | 0x00c00148 b9a4 movb [r4], rl5 ; START_V2.A66:1808
|
||
| | 0x00c0014a 0841 add r4, #1 ; START_V2.A66:1809
|
||
| | 0x00c0014c 2821 sub r2, #1 ; START_V2.A66:1810
|
||
| | 0x00c0014e 7dfc jmpr cc_NN, sym.a166_NEAR.ClearNear ; START_V2.A66:1811
|
||
\ | 0x00c00150 0dd7 jmpr cc_UC, sym.a166_NEAR.RepeatClear ; START_V2.A66:1812
|
||
| ;-- a166_NEAR.Init_Vars:
|
||
/ sym.a166_NEAR.EndClear();
|
||
| `-> 0x00c00152 e6f9c000 mov r9, #0x00c0 ; START_V2.A66:1873
|
||
\ 0x00c00156 e6f80400 mov r8, #0x0004 ; START_V2.A66:1874
|
||
; DATA XREF from sym.a166_NEAR.NoDPP3Adj @ 0xc001b6
|
||
/ sym.a166_NEAR.RepeatInit();
|
||
| 0x00c0015a e6030300 mov DPP3, #0x0003 ; START_V2.A66:1880
|
||
| 0x00c0015e dc09 exts r9, #1 ; START_V2.A66:1881
|
||
| 0x00c00160 a828 mov r2, [r8] ; START_V2.A66:1882
|
||
| 0x00c00162 2d3d jmpr cc_Z/EQ, sym.a166_NEAR.EndInit ; START_V2.A66:1883
|
||
| 0x00c00164 0882 add r8, #2 ; START_V2.A66:1884
|
||
| 0x00c00166 1890 addc r9, #0 ; START_V2.A66:1885
|
||
| 0x00c00168 aaf22af0 jbc r2.15, sym.a166_NEAR.InitBit ; START_V2.A66:1886 ; 0xc001c0
|
||
| 0x00c0016c f042 mov r4, r2 ; START_V2.A66:1887
|
||
| 0x00c0016e 66f2ff3f and r2, #0x3fff ; START_V2.A66:1888
|
||
| 0x00c00172 3d05 jmpr cc_NZ/NE, sym.a166_NEAR.LenLoad ; START_V2.A66:1889
|
||
| 0x00c00174 e004 mov r4, #0x00 ; START_V2.A66:1890
|
||
| 0x00c00176 dc09 exts r9, #1 ; START_V2.A66:1891
|
||
| 0x00c00178 a828 mov r2, [r8] ; START_V2.A66:1892
|
||
| 0x00c0017a 0882 add r8, #2 ; START_V2.A66:1893
|
||
\ 0x00c0017c 1890 addc r9, #0 ; START_V2.A66:1894
|
||
/ sym.a166_NEAR.LenLoad();
|
||
| 0x00c0017e dc09 exts r9, #1 ; START_V2.A66:1895
|
||
| 0x00c00180 a838 mov r3, [r8] ; START_V2.A66:1896
|
||
| 0x00c00182 0882 add r8, #2 ; START_V2.A66:1897
|
||
| 0x00c00184 1890 addc r9, #0 ; START_V2.A66:1898
|
||
| 0x00c00186 8af406e0 jb r4.14, sym.a166_NEAR.CopyInitVal ; START_V2.A66:1899 ; 0xc00196
|
||
| 0x00c0018a f6f306fe mov DPP3:0x3e06, r3 ; START_V2.A66:1900
|
||
| 0x00c0018e dc09 exts r9, #1 ; START_V2.A66:1901
|
||
| 0x00c00190 a838 mov r3, [r8] ; START_V2.A66:1902
|
||
| 0x00c00192 0882 add r8, #2 ; START_V2.A66:1903
|
||
\ 0x00c00194 1890 addc r9, #0 ; START_V2.A66:1904
|
||
; DATA XREF from sym.a166_NEAR.LenLoad @ 0xc00186
|
||
/ sym.a166_NEAR.CopyInitVal();
|
||
| 0x00c00196 dc09 exts r9, #1 ; START_V2.A66:1905
|
||
| 0x00c00198 a9a8 movb rl5, [r8] ; START_V2.A66:1906
|
||
| 0x00c0019a 0881 add r8, #1 ; START_V2.A66:1907
|
||
|
||
; CALL XREF from sym.a166_FAR._C_FPATOF @ 0xc00660
|
||
/ sym.a166_FAR._C_FPADD();
|
||
| 0x00c001e6 ca008c05 calla+ cc_UC, ?C_FPGETOPN ; 0x58c ; 1420
|
||
| 0x00c001ea 46faff00 cmp r10, #0x00ff
|
||
| ,=< 0x00c001ee 3d10 jmpr cc_NZ/NE, 0xc00210
|
||
| | 0x00c001f0 46f78000 cmp r7, #0x0080
|
||
| ,==< 0x00c001f4 3d13 jmpr cc_NZ/NE, 0xc0021c
|
||
| || 0x00c001f6 46f9ff00 cmp r9, #0x00ff
|
||
| ,===< 0x00c001fa 3d07 jmpr cc_NZ/NE, 0xc0020a
|
||
| ||| 0x00c001fc 46f58000 cmp r5, #0x0080
|
||
| ,====< 0x00c00200 3d0d jmpr cc_NZ/NE, 0xc0021c
|
||
| |||| 0x00c00202 2af2f280 bcmp r2.8, r2.0
|
||
| ,=====< 0x00c00206 6d0a jmpr cc_N, 0xc0021c
|
||
| ,======< 0x00c00208 0d0b jmpr cc_UC, 0xc00220
|
||
| |||`---> 0x00c0020a 4af2f280 bmov r2.8, r2.0
|
||
| |||,===< 0x00c0020e 0d08 jmpr cc_UC, 0xc00220
|
||
| |||||`-> 0x00c00210 46f9ff00 cmp r9, #0x00ff
|
||
| |||||,=< 0x00c00214 3d07 jmpr cc_NZ/NE, sym.a166_FAR._C_FPXSUB
|
||
| |||||| 0x00c00216 46f58000 cmp r5, #0x0080
|
||
| ,=======< 0x00c0021a 2d02 jmpr cc_Z/EQ, 0xc00220
|
||
| ==``-`--> 0x00c0021c ea00b205 jmpa+ cc_UC, ?C_FPNANRSL ; sym.a166_NEAR._C_FPNANRSL
|
||
| || | | ; 0xc005b2
|
||
\ ``--`,==< 0x00c00220 ea00ba05 jmpa+ cc_UC, ?C_FPINFRSL ; sym.a166_NEAR._C_FPINFRSL
|
||
\ || ; 0xc005ba
|
||
|| ; CALL XREF from ?C_FPCMP @ 0xc00530
|
||
/ sym.a166_FAR._C_FPXSUB();
|
||
| |`-> 0x00c00224 48a0 cmp r10, #0
|
||
|
||
; CALL XREF from main @ 0xc014c4
|
||
;-- section.PR_GETLINE_FCODE:
|
||
/ getline();
|
||
| 0x00c018da ecfd push r13 ; Getline.c:20 ; [07] -rw- section size 146 named PR_GETLINE_FCODE
|
||
| 0x00c018dc ecfe push r14
|
||
| 0x00c018de ecff push r15
|
||
| 0x00c018e0 f0e9 mov r14, r9
|
||
| 0x00c018e2 f0d8 mov r13, r8
|
||
| 0x00c018e4 2802 sub r0, #2
|
||
| 0x00c018e6 e108 movb rl4, #0x0000 ; Getline.c:21
|
||
| 0x00c018e8 b980 movb [r0], rl4
|
||
| 0x00c018ea dac01c00 calls _getkey ; Getline.c:24 ; 0xc0001c
|
||
| 0x00c018ee f0f4 mov r15, r4
|
||
| 0x00c018f0 47f80d00 cmpb rl4, #0x000d
|
||
| ,=< 0x00c018f4 3d01 jmpr cc_NZ/NE, 0xc018f8
|
||
| | 0x00c018f6 e0af mov r15, #0x0a
|
||
| `-> 0x00c018f8 f04f mov r4, r15 ; Getline.c:26
|
||
| 0x00c018fa 47f80800 cmpb rl4, #0x0008
|
||
| ,=< 0x00c018fe 2d03 jmpr cc_Z/EQ, 0xc01906
|
||
| | 0x00c01900 47f87f00 cmpb rl4, #0x007f
|
||
| ,==< 0x00c01904 3d11 jmpr cc_NZ/NE, 0xc01928
|
||
| |`-> 0x00c01906 a980 movb rl4, [r0] ; Getline.c:27
|
||
| |,=< 0x00c01908 2d1f jmpr cc_Z/EQ, 0xc01948
|
||
| || 0x00c0190a a980 movb rl4, [r0] ; Getline.c:28
|
||
| || 0x00c0190c 2981 subb rl4, #0x0001
|
||
| || 0x00c0190e b980 movb [r0], rl4
|
||
|
||
; CALL XREF from main @ 0xc0153e
|
||
/ read_index();
|
||
| 0x00c013b0 ecfe push r14 ; Measure.c:129
|
||
| 0x00c013b2 ecff push r15
|
||
| 0x00c013b4 f0e8 mov r14, r8
|
||
| 0x00c013b6 f0f9 mov r15, r9
|
||
| 0x00c013b8 2802 sub r0, #2
|
||
| 0x00c013ba e004 mov r4, #0x00 ; Measure.c:130
|
||
| 0x00c013bc b840 mov [r0], r4
|
||
| 0x00c013be f3f84602 movb rl4, 0xfe00:0x0246 ; Measure.c:133
|
||
| ,=< 0x00c013c2 3d17 jmpr cc_NZ/NE, data.00c013f2
|
||
| | 0x00c013c4 f3f84702 movb rl4, 0xfe00:0x0247
|
||
| ,==< 0x00c013c8 3d14 jmpr cc_NZ/NE, data.00c013f2
|
||
| || 0x00c013ca f2f44802 mov r4, 0xfe00:0x0248
|
||
| || 0x00c013ce 46f4e703 cmp r4, #0x03e7
|
||
| ,===< 0x00c013d2 9d0f jmpr cc_NC/UGE, data.00c013f2
|
||
| ,====< 0x00c013d4 9a000d20 jnb section.BI0_MEASURE_BIT0, data.00c013f2 ; 0xc013f2
|
||
| |||| 0x00c013d8 e6fa821a mov r10, #0x1a82 ; Measure.c:137
|
||
| |||| 0x00c013dc e6fbc000 mov r11, #0x00c0
|
||
| |||| 0x00c013e0 e6f8261a mov r8, #0x1a26
|
||
| |||| 0x00c013e4 e6f9c000 mov r9, #0x00c0
|
||
| |||| 0x00c013e8 dac04a05 calls printf ; sym.a166_FAR.printf
|
||
| |||| ; 0xc0054a ; int printf(const char *format)
|
||
| |||| 0x00c013ec e6f4ffff mov r4, #0xffff ; Measure.c:138
|
||
| ,=====< 0x00c013f0 0d28 jmpr cc_UC, 0xc01442
|
||
| ||||| ; DATA XREF from read_index @ 0xc013d4
|
||
| ||||| ;-- data.00c013f2:
|
||
| |````-> 0x00c013f2 f040 mov r4, r0 ; Measure.c:139
|
||
| | 0x00c013f4 e005 mov r5, #0x00
|
||
| | 0x00c013f6 06f40000 add r4, #0x0000
|
||
| | 0x00c013fa 16f50100 addc r5, #0x0001
|
||
| | 0x00c013fe 8850 mov [-r0], r5
|
||
| | 0x00c01400 f0c4 mov r12, r4
|
||
| | 0x00c01402 e6fa491e mov r10, #0x1e49
|
||
| | 0x00c01406 e6fbc000 mov r11, #0x00c0
|
||
| | 0x00c0140a f09f mov r9, r15
|
||
| | 0x00c0140c f08e mov r8, r14
|
||
| | 0x00c0140e dac0fc0d calls sscanf ; sym.a166_FAR.sscanf
|
||
| | ; 0xc00dfc ; int sscanf(const char *s, const char *format, va_list args)
|
||
| | 0x00c01412 0802 add r0, #2
|
||
| | 0x00c01414 f054 mov r5, r4
|
||
| | 0x00c01416 4850 cmp r5, #0 ; Measure.c:141
|
||
| | ,=< 0x00c01418 2d05 jmpr cc_Z/EQ, 0xc01424
|
||
| | | 0x00c0141a a840 mov r4, [r0]
|
||
| | ,==< 0x00c0141c 2d03 jmpr cc_Z/EQ, 0xc01424
|
||
| | || 0x00c0141e 46f5ffff cmp r5, #0xffff
|
||
| | ,===< 0x00c01422 3d03 jmpr cc_NZ/NE, 0xc0142a
|
||
| | |``-> 0x00c01424 e6f4ff01 mov r4, #0x01ff
|
||
| | | 0x00c01428 b840 mov [r0], r4
|
||
| | `---> 0x00c0142a a850 mov r5, [r0] ; Measure.c:142
|
||
| | 0x00c0142c f2f44a02 mov r4, 0xfe00:0x024a
|
||
| | 0x00c01430 2045 sub r4, r5
|
||
| | 0x00c01432 b840 mov [r0], r4
|
||
| | 0x00c01434 4840 cmp r4, #0 ; Measure.c:143
|
||
| | ,=< 0x00c01436 dd04 jmpr cc_SGE, 0xc01440
|
||
| | | 0x00c01438 a840 mov r4, [r0]
|
||
| | | 0x00c0143a 06f40002 add r4, #0x0200
|
||
| | | 0x00c0143e b840 mov [r0], r4
|
||
| | `-> 0x00c01440 a840 mov r4, [r0] ; Measure.c:144
|
||
| `-----> 0x00c01442 0802 add r0, #2 ; Measure.c:145
|
||
| 0x00c01444 fcff pop r15
|
||
| 0x00c01446 fcfe pop r14
|
||
\ 0x00c01448 db00 rets
|
||
|
||
; CALL XREFS from main @ 0xc01586, 0xc01608
|
||
;-- section.PR_MCOMMAND_FCODE:
|
||
/ measure_display();
|
||
| 0x00c0168a ecfd push r13 ; Mcommand.c:16 ; [00] -rw- section size 592 named PR_MCOMMAND_FCODE
|
||
| 0x00c0168c d4400600 mov r4, [r0+#0x0006] ; Mcommand.c:24
|
||
| 0x00c01690 8840 mov [-r0], r4
|
||
| 0x00c01692 d4400600 mov r4, [r0+#0x0006]
|
||
| 0x00c01696 8840 mov [-r0], r4
|
||
| 0x00c01698 f4800600 movb rl4, [r0+#0x0006]
|
||
| 0x00c0169c c08c movbz r12, rl4
|
||
| 0x00c0169e f4800500 movb rl4, [r0+#0x0005]
|
||
| 0x00c016a2 c08b movbz r11, rl4
|
||
| 0x00c016a4 f4800400 movb rl4, [r0+#0x0004]
|
||
| 0x00c016a8 c08a movbz r10, rl4
|
||
| 0x00c016aa e6f8981e mov r8, #0x1e98
|
||
| 0x00c016ae e6f9c000 mov r9, #0x00c0
|
||
| 0x00c016b2 dac04a05 calls printf ; sym.a166_FAR.printf
|
||
| ; 0xc0054a ; int printf(const char *format)
|
||
| 0x00c016b6 0804 add r0, #4
|
||
| 0x00c016b8 e00d mov r13, #0x00 ; Mcommand.c:26
|
||
| ,=< 0x00c016ba 0d20 jmpr cc_UC, 0xc016fc
|
||
| .--> 0x00c016bc f04d mov r4, r13 ; Mcommand.c:27
|
||
| :| 0x00c016be c084 movbz r4, rl4
|
||
| :| 0x00c016c0 5c14 shl r4, #0x01
|
||
| :| 0x00c016c2 e081 mov r1, #0x08
|
||
| :| 0x00c016c4 0010 add r1, r0
|
||
| :| 0x00c016c6 0014 add r1, r4
|
||
| :| 0x00c016c8 a841 mov r4, [r1]
|
||
| :| 0x00c016ca e005 mov r5, #0x00
|
||
| :| 0x00c016cc e006 mov r6, #0x00
|
||
| :| 0x00c016ce dac08204 calls ?C_FCAST ; sym.a166_FAR._C_FCAST
|
||
| :| ; 0xc00482
|
||
| :| 0x00c016d2 e006 mov r6, #0x00
|
||
| :| 0x00c016d4 e6f7a040 mov r7, #0x40a0
|
||
| :| 0x00c016d8 dac0ca02 calls ?C_FPMUL ; sym.a166_FAR._C_FPMUL
|
||
| :| ; 0xc002ca
|
||
| :| 0x00c016dc e006 mov r6, #0x00
|
||
| :| 0x00c016de e6f78044 mov r7, #0x4480
|
||
| :| 0x00c016e2 dac05e03 calls ?C_FPDIV ; sym.a166_FAR._C_FPDIV
|
||
| :| ; 0xc0035e
|
||
| :| 0x00c016e6 f0b4 mov r11, r4
|
||
| :| 0x00c016e8 f0c5 mov r12, r5
|
||
| :| 0x00c016ea f04d mov r4, r13
|
||
| :| 0x00c016ec c08a movbz r10, rl4
|
||
| :| 0x00c016ee e6f88b1e mov r8, #0x1e8b
|
||
| :| 0x00c016f2 e6f9c000 mov r9, #0x00c0
|
||
| :| 0x00c016f6 dac04a05 calls printf ; sym.a166_FAR.printf
|
||
| :| ; 0xc0054a ; int printf(const char *format)
|
||
| :| 0x00c016fa 08d1 add r13, #1 ; Mcommand.c:28
|
||
| :`-> 0x00c016fc f04d mov r4, r13
|
||
| : 0x00c016fe 4984 cmpb rl4, #0x0004
|
||
| `==< 0x00c01700 3ddd jmpr cc_NZ/NE, 0xc016bc
|
||
| 0x00c01702 fcfd pop r13 ; Mcommand.c:29
|
||
\ 0x00c01704 db00 rets
|
||
EOF
|
||
RUN
|
||
|
||
|
||
NAME=C166 measure raw dump file iA
|
||
FILE=bins/c166/measure_raw.bin
|
||
CMDS=<<EOF
|
||
e asm.arch=c166
|
||
e asm.bytes=true
|
||
iA
|
||
echo
|
||
iS
|
||
echo
|
||
pd 25
|
||
echo
|
||
EOF
|
||
EXPECT=<<EOF
|
||
offset size arch bits machine big_endian
|
||
----------------------------------------------------------------------------------
|
||
0x00000000 7958 c166 16 Siemens/Infineon C166 family microcontroller false
|
||
|
||
paddr size vaddr vsize align perm name type flags
|
||
--------------------------------------------------
|
||
|
||
;-- entry0:
|
||
,=< 0x00c00000 fac08400 jmps 0xc00084
|
||
| 0x00c00004 0000 add r0, r0
|
||
| 0x00c00006 ffff bset r15.15
|
||
,==< 0x00c00008 fac07400 jmps 0xc00074
|
||
|| 0x00c0000c ffff bset r15.15
|
||
|| 0x00c0000e ffff bset r15.15
|
||
,===< 0x00c00010 fac07600 jmps 0xc00076
|
||
||| 0x00c00014 ffff bset r15.15
|
||
||| 0x00c00016 ffff bset r15.15
|
||
,====< 0x00c00018 fac07800 jmps 0xc00078
|
||
@====-> 0x00c0001c 9ab7fe70 jnb 0xff6e.7, 0xc0001c
|
||
|||| 0x00c00020 f2f4b2fe mov r4, 0xfe06:0x3eb2
|
||
|||| 0x00c00024 7eb7 bclr 0xff6e.7
|
||
|||| 0x00c00026 db00 rets
|
||
,=====< 0x00c00028 fac07a00 jmps 0xc0007a
|
||
||||| 0x00c0002c 1a800400 bfldh 0xff00, #0x00, #0x04
|
||
||||| 0x00c00030 40c2 cmp r12, r2
|
||
||||| 0x00c00032 0fa0 bset 0xff40.0
|
||
||||| 0x00c00034 04005cc2 add 0xfe06:0x025c, 0xfe00
|
||
||||| 0x00c00038 03000000 addb 0xfe00, 0xfe00:0x0000
|
||
||||| 0x00c0003c 0080 add r8, r0
|
||
||||| 0x00c0003e 04005bc2 add 0xfe06:0x025b, 0xfe00
|
||
||||| 0x00c00042 0000 add r0, r0
|
||
||||| 0x00c00044 0000 add r0, r0
|
||
||||| 0x00c00046 803f cmpi1 r15, #0x03
|
||
|
||
EOF
|
||
RUN
|
||
|
||
#NAME=C166 Hello world binary file
|
||
#FILE=bins/c166/hello_world_hex167.bin
|
||
#CMDS=<<EOF
|
||
#e asm.arch=c166
|
||
#pD 4
|
||
#ia
|
||
#flt
|
||
#pd 1221 @ 0
|
||
#EOF
|
||
#EXPECT=<<EOF
|
||
# ,=< 0x00000000 jmps 0x00, 0x0004
|
||
#EOF
|
||
#RUN
|