📄 inioper.txt
字号:
000594 e28d107c ADD r1,sp,#0x7c
000598 e7d10000 LDRB r0,[r1,r0]
00059c e350002b CMP r0,#0x2b
0005a0 1a000049 BNE |L1.1740|
;;;287 {
;;;288 buf1[n-1] = 0x00;
0005a4 e3a00000 MOV r0,#0
0005a8 e2491001 SUB r1,r9,#1
0005ac e28d207c ADD r2,sp,#0x7c
0005b0 e7c20001 STRB r0,[r2,r1]
;;;289 while(1)
0005b4 ea000041 B |L1.1728|
|L1.1464|
;;;290 {
;;;291 ret = CFG_ERR_READ_FILE;
0005b8 e3e0000b MVN r0,#0xb
0005bc e58d0008 STR r0,[sp,#8]
;;;292 n = FileGetLine(fhandle, curpos, buf2, MAX_CFG_BUF);
0005c0 e3a03064 MOV r3,#0x64
0005c4 e28d2014 ADD r2,sp,#0x14
0005c8 e1a0100a MOV r1,r10
0005cc e1a00004 MOV r0,r4
0005d0 ebfffffe BL FileGetLine
0005d4 e1a09000 MOV r9,r0
;;;293 curpos += n + 2;
0005d8 e2890002 ADD r0,r9,#2
0005dc e08aa000 ADD r10,r10,r0
;;;294 if(n < -1) goto r_cfg_end;
0005e0 e3790001 CMN r9,#1
0005e4 aa000000 BGE |L1.1516|
0005e8 ea000054 B |L1.1856|
|L1.1516|
;;;295 if(n < 0) break; /* 文件结束 */
0005ec e3590000 CMP r9,#0
0005f0 aa000000 BGE |L1.1528|
0005f4 ea000033 B |L1.1736|
|L1.1528|
;;;296 line_no++;
0005f8 e2888001 ADD r8,r8,#1
;;;297 CFG_key_lines++;
0005fc e59f06b0 LDR r0,|L1.3252|
000600 e5900000 LDR r0,[r0,#0] ; CFG_key_lines
000604 e2800001 ADD r0,r0,#1
000608 e59f16a4 LDR r1,|L1.3252|
00060c e5810000 STR r0,[r1,#0] ; CFG_key_lines
;;;298 n = strlen(strtrimr(buf2));
000610 e28d0014 ADD r0,sp,#0x14
000614 ebfffffe BL strtrimr
000618 e1a0b000 MOV r11,r0
00061c ebfffffe BL strlen
000620 e1a09000 MOV r9,r0
;;;299 ret = CFG_ERR_EXCEED_BUF_SIZE;
000624 e3e00015 MVN r0,#0x15
000628 e58d0008 STR r0,[sp,#8]
;;;300 if(n > 0 && buf2[n-1] == '+') /* 遇+号表示下一行继续 */
00062c e3590000 CMP r9,#0
000630 da000015 BLE |L1.1676|
000634 e2490001 SUB r0,r9,#1
000638 e28d1014 ADD r1,sp,#0x14
00063c e7d10000 LDRB r0,[r1,r0]
000640 e350002b CMP r0,#0x2b
000644 1a000010 BNE |L1.1676|
;;;301 {
;;;302 buf2[n-1] = 0x00;
000648 e3a00000 MOV r0,#0
00064c e2491001 SUB r1,r9,#1
000650 e28d2014 ADD r2,sp,#0x14
000654 e7c20001 STRB r0,[r2,r1]
;;;303 if(strlen(buf1) + strlen(buf2) > MAX_CFG_BUF)
000658 e28d007c ADD r0,sp,#0x7c
00065c ebfffffe BL strlen
000660 e1a0b000 MOV r11,r0
000664 e28d0014 ADD r0,sp,#0x14
000668 ebfffffe BL strlen
00066c e080000b ADD r0,r0,r11
000670 e3500064 CMP r0,#0x64
000674 9a000000 BLS |L1.1660|
;;;304 goto r_cfg_end;
000678 ea000030 B |L1.1856|
|L1.1660|
;;;305 strcat(buf1, buf2);
00067c e28d1014 ADD r1,sp,#0x14
000680 e28d007c ADD r0,sp,#0x7c
000684 ebfffffe BL strcat
;;;306 continue;
000688 ea00000c B |L1.1728|
|L1.1676|
;;;307 }
;;;308 if(strlen(buf1) + strlen(buf2) > MAX_CFG_BUF)
00068c e28d007c ADD r0,sp,#0x7c
000690 ebfffffe BL strlen
000694 e1a0b000 MOV r11,r0
000698 e28d0014 ADD r0,sp,#0x14
00069c ebfffffe BL strlen
0006a0 e080000b ADD r0,r0,r11
0006a4 e3500064 CMP r0,#0x64
0006a8 9a000000 BLS |L1.1712|
;;;309 goto r_cfg_end;
0006ac ea000023 B |L1.1856|
|L1.1712|
;;;310 strcat(buf1, buf2);
0006b0 e28d1014 ADD r1,sp,#0x14
0006b4 e28d007c ADD r0,sp,#0x7c
0006b8 ebfffffe BL strcat
;;;311 break;
0006bc ea000001 B |L1.1736|
|L1.1728|
0006c0 e1a00000 MOV r0,r0 ;306
0006c4 eaffffbb B |L1.1464|
|L1.1736|
0006c8 e1a00000 MOV r0,r0 ;295
|L1.1740|
;;;312 }
;;;313 }
;;;314 ret = CFG_ERR_FILE_FORMAT;
0006cc e3e0000d MVN r0,#0xd
0006d0 e58d0008 STR r0,[sp,#8]
;;;315 if(SplitKeyValue(buf1, &key_ptr, &val_ptr) != 1)
0006d4 e28d200c ADD r2,sp,#0xc
0006d8 e28d1010 ADD r1,sp,#0x10
0006dc e28d007c ADD r0,sp,#0x7c
0006e0 ebfffffe BL SplitKeyValue
0006e4 e3500001 CMP r0,#1
0006e8 0a000000 BEQ |L1.1776|
;;;316 goto r_cfg_end;
0006ec ea000013 B |L1.1856|
|L1.1776|
;;;317 strtriml(strtrimr(key_ptr));
0006f0 e59d0010 LDR r0,[sp,#0x10]
0006f4 ebfffffe BL strtrimr
0006f8 e1a0b000 MOV r11,r0
0006fc ebfffffe BL strtriml
;;;318 if(strcmp(key_ptr, key) != 0)
000700 e1a01006 MOV r1,r6
000704 e59d0010 LDR r0,[sp,#0x10]
000708 ebfffffe BL strcmp
00070c e3500000 CMP r0,#0
000710 0a000000 BEQ |L1.1816|
;;;319 continue; /* 和key值不匹配 */
000714 ea000003 B |L1.1832|
|L1.1816|
;;;320 strcpy(buf, val_ptr);
000718 e1a00007 MOV r0,r7
00071c e59d100c LDR r1,[sp,#0xc]
000720 ebfffffe BL strcpy
;;;321 break;
000724 ea000001 B |L1.1840|
|L1.1832|
000728 e1a00000 MOV r0,r0 ;283
00072c eaffff68 B |L1.1236|
|L1.1840|
000730 e1a00000 MOV r0,r0
;;;322 }
;;;323 ret = CFG_OK;
000734 e3a00000 MOV r0,#0
000738 e58d0008 STR r0,[sp,#8]
;;;324 r_cfg_end:
00073c e1a00000 MOV r0,r0
|L1.1856|
;;;325 //if(fp != NULL) fclose(fp);
;;;326 return ret;
000740 e59d0008 LDR r0,[sp,#8]
000744 e28dd0e4 ADD sp,sp,#0xe4
000748 e8bd4ff0 POP {r4-r11,lr}
;;;327 }
00074c e12fff1e BX lr
;;;328
ENDP
strtoint PROC
;;;685 long strtoint(unsigned char *buf, unsigned int len)
;;;686 {
000750 e92d41f0 PUSH {r4-r8,lr}
000754 e1a04000 MOV r4,r0
000758 e1a05001 MOV r5,r1
;;;687 long Temp = 0;
00075c e3a06000 MOV r6,#0
;;;688 long dd = 1;
000760 e3a08001 MOV r8,#1
;;;689 int j;
;;;690
;;;691 for (j = 1; j < len; j++)
000764 e3a07001 MOV r7,#1
000768 ea000002 B |L1.1912|
|L1.1900|
;;;692 dd *= 10;
00076c e3a0000a MOV r0,#0xa
000770 e0080890 MUL r8,r0,r8
000774 e2877001 ADD r7,r7,#1 ;691
|L1.1912|
000778 e1570005 CMP r7,r5 ;691
00077c 3afffffa BCC |L1.1900|
;;;693
;;;694 for (j = 0;j < len; j++){
000780 e3a07000 MOV r7,#0
000784 ea000007 B |L1.1960|
|L1.1928|
;;;695 Temp = Temp + (buf[j] - 0x30) * dd;
000788 e7d40007 LDRB r0,[r4,r7]
00078c e2400030 SUB r0,r0,#0x30
000790 e0266890 MLA r6,r0,r8,r6
;;;696 dd = dd / 10;
000794 e3a0100a MOV r1,#0xa
000798 e1a00008 MOV r0,r8
00079c ebfffffe BL __aeabi_idivmod
0007a0 e1a08000 MOV r8,r0
0007a4 e2877001 ADD r7,r7,#1 ;694
|L1.1960|
0007a8 e1570005 CMP r7,r5 ;694
0007ac 3afffff5 BCC |L1.1928|
;;;697 }
;;;698 return Temp;
0007b0 e1a00006 MOV r0,r6
0007b4 e8bd41f0 POP {r4-r8,lr}
;;;699 }
0007b8 e12fff1e BX lr
;;;700
ENDP
pickcsvdata PROC
;;;633 unsigned char * pickcsvdata(unsigned char *buf, unsigned int len, unsigned char endchar, unsigned char analysechar, unsigned int pos)
;;;634 {
0007bc e92d4fff PUSH {r0-r11,lr}
0007c0 e24dd024 SUB sp,sp,#0x24
0007c4 e1a04000 MOV r4,r0
0007c8 e1a05001 MOV r5,r1
0007cc e1a06002 MOV r6,r2
0007d0 e59d7058 LDR r7,[sp,#0x58]
;;;635 unsigned char bu[30];
;;;636 unsigned int i, count, iStart, iEnd;
;;;637
;;;638 iStart = iEnd = count = 0;
0007d4 e3a00000 MOV r0,#0
0007d8 e1a09000 MOV r9,r0
0007dc e1a0b000 MOV r11,r0
0007e0 e1a0a000 MOV r10,r0
;;;639 //len = 30;//strlen(buf);
;;;640 for (i = 0; i < len; i++)
0007e4 e3a08000 MOV r8,#0
0007e8 ea00001a B |L1.2136|
|L1.2028|
;;;641 {
;;;642 if ((buf[i] == analysechar) || (buf[i] == endchar))
0007ec e7d40008 LDRB r0,[r4,r8]
0007f0 e59d1030 LDR r1,[sp,#0x30]
0007f4 e1500001 CMP r0,r1
0007f8 0a000002 BEQ |L1.2056|
0007fc e7d40008 LDRB r0,[r4,r8]
000800 e1500006 CMP r0,r6
000804 1a000012 BNE |L1.2132|
|L1.2056|
;;;643 {
;;;644 if (pos == 0)
000808 e3570000 CMP r7,#0
00080c 1a000002 BNE |L1.2076|
;;;645 {
;;;646 iStart = 0;
000810 e3a0a000 MOV r10,#0
;;;647 iEnd = i;
000814 e1a0b008 MOV r11,r8
;;;648 break;
000818 ea000010 B |L1.2144|
|L1.2076|
;;;649 }
;;;650 else if (i == len - 1)
00081c e2450001 SUB r0,r5,#1
000820 e1500008 CMP r0,r8
000824 1a000001 BNE |L1.2096|
;;;651 {
;;;652 iEnd = i;
000828 e1a0b008 MOV r11,r8
;;;653 break;
00082c ea00000b B |L1.2144|
|L1.2096|
;;;654 }
;;;655 else
;;;656 {
;;;657 if (count == pos - 1)
000830 e2470001 SUB r0,r7,#1
000834 e1500009 CMP r0,r9
000838 1a000000 BNE |L1.2112|
;;;658 iStart = i + 1;
00083c e288a001 ADD r10,r8,#1
|L1.2112|
;;;659 if (count == pos)
000840 e1590007 CMP r9,r7
000844 1a000001 BNE |L1.2128|
;;;660 {
;;;661 iEnd = i;
000848 e1a0b008 MOV r11,r8
;;;662 break;
00084c ea000003 B |L1.2144|
|L1.2128|
;;;663 }
;;;664 }
;;;665
;;;666 count++;
000850 e2899001 ADD r9,r9,#1
|L1.2132|
000854 e2888001 ADD r8,r8,#1 ;640
|L1.2136|
000858 e1580005 CMP r8,r5 ;640
00085c 3affffe2 BCC |L1.2028|
|L1.2144|
000860 e1a00000 MOV r0,r0 ;648
;;;667 }
;;;668
;;;669 }
;;;670 //if (i == len)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -