📄 inioper.txt
字号:
|L1.652|
00028c e2877001 ADD r7,r7,#1 ;188
|L1.656|
000290 e157000a CMP r7,r10 ;188
000294 bafffff8 BLT |L1.636|
|L1.664|
000298 e1a00000 MOV r0,r0 ;189
00029c e157000a CMP r7,r10 ;190
0002a0 ba000001 BLT |L1.684|
0002a4 e3e00001 MVN r0,#1 ;190
0002a8 eaffffd8 B |L1.528|
|L1.684|
0002ac e1a09007 MOV r9,r7 ;191
0002b0 e2877001 ADD r7,r7,#1 ;192
0002b4 ea000007 B |L1.728|
|L1.696|
0002b8 e7d40007 LDRB r0,[r4,r7] ;193
0002bc e3500020 CMP r0,#0x20 ;193
0002c0 0a000003 BEQ |L1.724|
0002c4 e7d40007 LDRB r0,[r4,r7] ;193
0002c8 e3500009 CMP r0,#9 ;193
0002cc 0a000000 BEQ |L1.724|
0002d0 ea000002 B |L1.736|
|L1.724|
0002d4 e2877001 ADD r7,r7,#1 ;192
|L1.728|
0002d8 e157000a CMP r7,r10 ;192
0002dc bafffff5 BLT |L1.696|
|L1.736|
0002e0 e1a00000 MOV r0,r0 ;193
0002e4 e3a00000 MOV r0,#0 ;194
0002e8 e7c40009 STRB r0,[r4,r9] ;194
0002ec e0840008 ADD r0,r4,r8 ;195
0002f0 e5850000 STR r0,[r5,#0] ;195
0002f4 e0840007 ADD r0,r4,r7 ;196
0002f8 e5860000 STR r0,[r6,#0] ;196
0002fc e3a00001 MOV r0,#1 ;197
000300 eaffffc2 B |L1.528|
;;;199
ENDP
getcsvlen PROC
;;;200 unsigned int getcsvlen(unsigned char *buf)
;;;201 {
000304 e1a01000 MOV r1,r0
;;;202 unsigned int i;
;;;203
;;;204 for (i = 0; i < MAX_CFG_BUF; i++)
000308 e3a00000 MOV r0,#0
00030c e1a02000 MOV r2,r0
000310 ea000006 B |L1.816|
|L1.788|
;;;205 {
;;;206 if (buf[i] == ';')
000314 e7d10002 LDRB r0,[r1,r2]
000318 e350003b CMP r0,#0x3b
00031c 1a000001 BNE |L1.808|
;;;207 return i + 1;
000320 e2820001 ADD r0,r2,#1
|L1.804|
;;;208 }
;;;209 }
000324 e12fff1e BX lr
|L1.808|
000328 e2820001 ADD r0,r2,#1 ;204
00032c e1a02000 MOV r2,r0 ;204
|L1.816|
000330 e3520064 CMP r2,#0x64 ;204
000334 3afffff6 BCC |L1.788|
000338 eafffff9 B |L1.804|
;;;210
ENDP
getcsvlendot PROC
;;;211 unsigned int getcsvlendot(unsigned char *buf)
;;;212 {
00033c e1a01000 MOV r1,r0
;;;213 unsigned int i;
;;;214
;;;215 for (i = 0; i < MAX_CFG_BUF; i++)
000340 e3a00000 MOV r0,#0
000344 e1a02000 MOV r2,r0
000348 ea000006 B |L1.872|
|L1.844|
;;;216 {
;;;217 if (buf[i] == ',')
00034c e7d10002 LDRB r0,[r1,r2]
000350 e350002c CMP r0,#0x2c
000354 1a000001 BNE |L1.864|
;;;218 return i + 1;
000358 e2820001 ADD r0,r2,#1
|L1.860|
;;;219 }
;;;220 }
00035c e12fff1e BX lr
|L1.864|
000360 e2820001 ADD r0,r2,#1 ;215
000364 e1a02000 MOV r2,r0 ;215
|L1.872|
000368 e3520064 CMP r2,#0x64 ;215
00036c 3afffff6 BCC |L1.844|
000370 eafffff9 B |L1.860|
;;;221 /**********************************************************************
ENDP
ConfigGetKey PROC
;;;235 int ConfigGetKey(unsigned fhandle, void *section, void *key, void *buf)
;;;236 {
000374 e92d4ff0 PUSH {r4-r11,lr}
000378 e24dd0e4 SUB sp,sp,#0xe4
00037c e1a04000 MOV r4,r0
000380 e1a05001 MOV r5,r1
000384 e1a06002 MOV r6,r2
000388 e1a07003 MOV r7,r3
;;;237 char buf1[MAX_CFG_BUF + 1], buf2[MAX_CFG_BUF + 1];
;;;238 char *key_ptr, *val_ptr;
;;;239 int line_no, n, ret;
;;;240 int curpos = 0; //当前位置
00038c e3a0a000 MOV r10,#0
;;;241
;;;242 line_no = 0;
000390 e3a08000 MOV r8,#0
;;;243 CFG_section_line_no = 0;
000394 e3a00000 MOV r0,#0
000398 e59f190c LDR r1,|L1.3244|
00039c e5810000 STR r0,[r1,#0] ; CFG_section_line_no
;;;244 CFG_key_line_no = 0;
0003a0 e59f1908 LDR r1,|L1.3248|
0003a4 e5810000 STR r0,[r1,#0] ; CFG_key_line_no
;;;245 CFG_key_lines = 0;
0003a8 e59f1904 LDR r1,|L1.3252|
0003ac e5810000 STR r0,[r1,#0] ; CFG_key_lines
;;;246
;;;247 while(1) /* 搜找项section */
0003b0 ea000042 B |L1.1216|
|L1.948|
;;;248 {
;;;249 ret = CFG_ERR_READ_FILE;
0003b4 e3e0000b MVN r0,#0xb
0003b8 e58d0008 STR r0,[sp,#8]
;;;250 n = FileGetLine(fhandle, curpos, buf1, MAX_CFG_BUF);
0003bc e3a03064 MOV r3,#0x64
0003c0 e28d207c ADD r2,sp,#0x7c
0003c4 e1a0100a MOV r1,r10
0003c8 e1a00004 MOV r0,r4
0003cc ebfffffe BL FileGetLine
0003d0 e1a09000 MOV r9,r0
;;;251 curpos += n + 2;
0003d4 e2890002 ADD r0,r9,#2
0003d8 e08aa000 ADD r10,r10,r0
;;;252 if(n < -1) goto r_cfg_end;
0003dc e3790001 CMN r9,#1
0003e0 aa000000 BGE |L1.1000|
0003e4 ea0000d5 B |L1.1856|
|L1.1000|
;;;253 ret = CFG_SECTION_NOT_FOUND;
0003e8 e3e00000 MVN r0,#0
0003ec e58d0008 STR r0,[sp,#8]
;;;254 if(n < 0) goto r_cfg_end; /* 文件尾,未发现 */
0003f0 e3590000 CMP r9,#0
0003f4 aa000000 BGE |L1.1020|
0003f8 ea0000d0 B |L1.1856|
|L1.1020|
;;;255 line_no++;
0003fc e2888001 ADD r8,r8,#1
;;;256 n = strlen(strtriml(strtrimr(buf1)));
000400 e28d007c ADD r0,sp,#0x7c
000404 ebfffffe BL strtrimr
000408 e58d0004 STR r0,[sp,#4]
00040c ebfffffe BL strtriml
000410 e1a0b000 MOV r11,r0
000414 ebfffffe BL strlen
000418 e1a09000 MOV r9,r0
;;;257 if(n == 0 || buf1[0] == CFG_nts) continue; /* 空行 或 注释行 */
00041c e3590000 CMP r9,#0
000420 0a000004 BEQ |L1.1080|
000424 e5dd007c LDRB r0,[sp,#0x7c]
000428 e59f1888 LDR r1,|L1.3256|
00042c e5d11000 LDRB r1,[r1,#0] ; CFG_nts
000430 e1500001 CMP r0,r1
000434 1a000000 BNE |L1.1084|
|L1.1080|
000438 ea000020 B |L1.1216|
|L1.1084|
;;;258 ret = CFG_ERR_FILE_FORMAT;
00043c e3e0000d MVN r0,#0xd
000440 e58d0008 STR r0,[sp,#8]
;;;259 if(n > 2 && ((buf1[0] == CFG_ssl && buf1[n-1] != CFG_ssr)))
000444 e3590002 CMP r9,#2
000448 da00000c BLE |L1.1152|
00044c e5dd007c LDRB r0,[sp,#0x7c]
000450 e59f1864 LDR r1,|L1.3260|
000454 e5d11000 LDRB r1,[r1,#0] ; CFG_ssl
000458 e1500001 CMP r0,r1
00045c 1a000007 BNE |L1.1152|
000460 e2490001 SUB r0,r9,#1
000464 e28d107c ADD r1,sp,#0x7c
000468 e7d10000 LDRB r0,[r1,r0]
00046c e59f184c LDR r1,|L1.3264|
000470 e5d11000 LDRB r1,[r1,#0] ; CFG_ssr
000474 e1500001 CMP r0,r1
000478 0a000000 BEQ |L1.1152|
;;;260 goto r_cfg_end;
00047c ea0000af B |L1.1856|
|L1.1152|
;;;261 if(buf1[0] == CFG_ssl)
000480 e5dd007c LDRB r0,[sp,#0x7c]
000484 e59f1830 LDR r1,|L1.3260|
000488 e5d11000 LDRB r1,[r1,#0] ; CFG_ssl
00048c e1500001 CMP r0,r1
000490 1a000009 BNE |L1.1212|
;;;262 {
;;;263 buf1[n-1] = 0x00;
000494 e3a00000 MOV r0,#0
000498 e2491001 SUB r1,r9,#1
00049c e28d207c ADD r2,sp,#0x7c
0004a0 e7c20001 STRB r0,[r2,r1]
;;;264 if(strcmp(buf1+1, (char*)section) == 0)
0004a4 e1a01005 MOV r1,r5
0004a8 e28d007d ADD r0,sp,#0x7d
0004ac ebfffffe BL strcmp
0004b0 e3500000 CMP r0,#0
0004b4 1a000000 BNE |L1.1212|
;;;265 break; /* 找到项section */
0004b8 ea000001 B |L1.1220|
|L1.1212|
0004bc e1a00000 MOV r0,r0 ;257
|L1.1216|
0004c0 eaffffbb B |L1.948|
|L1.1220|
0004c4 e1a00000 MOV r0,r0
;;;266 }
;;;267 }
;;;268
;;;269 CFG_section_line_no = line_no;
0004c8 e59f07dc LDR r0,|L1.3244|
0004cc e5808000 STR r8,[r0,#0] ; CFG_section_line_no
;;;270 //curpos = 0;
;;;271 while(1) /* 搜找key */
0004d0 ea000094 B |L1.1832|
|L1.1236|
;;;272 {
;;;273 ret = CFG_ERR_READ_FILE;
0004d4 e3e0000b MVN r0,#0xb
0004d8 e58d0008 STR r0,[sp,#8]
;;;274 n = FileGetLine(fhandle, curpos, buf1, MAX_CFG_BUF);
0004dc e3a03064 MOV r3,#0x64
0004e0 e28d207c ADD r2,sp,#0x7c
0004e4 e1a0100a MOV r1,r10
0004e8 e1a00004 MOV r0,r4
0004ec ebfffffe BL FileGetLine
0004f0 e1a09000 MOV r9,r0
;;;275 curpos += n + 2;
0004f4 e2890002 ADD r0,r9,#2
0004f8 e08aa000 ADD r10,r10,r0
;;;276 if(n < -1) goto r_cfg_end;
0004fc e3790001 CMN r9,#1
000500 aa000000 BGE |L1.1288|
000504 ea00008d B |L1.1856|
|L1.1288|
;;;277 ret = CFG_KEY_NOT_FOUND;
000508 e3e00001 MVN r0,#1
00050c e58d0008 STR r0,[sp,#8]
;;;278 if(n < 0) goto r_cfg_end; /* 文件尾,未发现key */
000510 e3590000 CMP r9,#0
000514 aa000000 BGE |L1.1308|
000518 ea000088 B |L1.1856|
|L1.1308|
;;;279 line_no++;
00051c e2888001 ADD r8,r8,#1
;;;280 CFG_key_line_no = line_no;
000520 e59f0788 LDR r0,|L1.3248|
000524 e5808000 STR r8,[r0,#0] ; CFG_key_line_no
;;;281 CFG_key_lines = 1;
000528 e3a00001 MOV r0,#1
00052c e59f1780 LDR r1,|L1.3252|
000530 e5810000 STR r0,[r1,#0] ; CFG_key_lines
;;;282 n = strlen(strtriml(strtrimr(buf1)));
000534 e28d007c ADD r0,sp,#0x7c
000538 ebfffffe BL strtrimr
00053c e58d0004 STR r0,[sp,#4]
000540 ebfffffe BL strtriml
000544 e1a0b000 MOV r11,r0
000548 ebfffffe BL strlen
00054c e1a09000 MOV r9,r0
;;;283 if(n == 0 || buf1[0] == CFG_nts) continue; /* 空行 或 注释行 */
000550 e3590000 CMP r9,#0
000554 0a000004 BEQ |L1.1388|
000558 e5dd007c LDRB r0,[sp,#0x7c]
00055c e59f1754 LDR r1,|L1.3256|
000560 e5d11000 LDRB r1,[r1,#0] ; CFG_nts
000564 e1500001 CMP r0,r1
000568 1a000000 BNE |L1.1392|
|L1.1388|
00056c ea00006d B |L1.1832|
|L1.1392|
;;;284 ret = CFG_KEY_NOT_FOUND;
000570 e3e00001 MVN r0,#1
000574 e58d0008 STR r0,[sp,#8]
;;;285 if(buf1[0] == CFG_ssl) goto r_cfg_end;
000578 e5dd007c LDRB r0,[sp,#0x7c]
00057c e59f1738 LDR r1,|L1.3260|
000580 e5d11000 LDRB r1,[r1,#0] ; CFG_ssl
000584 e1500001 CMP r0,r1
000588 1a000000 BNE |L1.1424|
00058c ea00006b B |L1.1856|
|L1.1424|
;;;286 if(buf1[n-1] == '+') /* 遇+号表示下一行继续 */
000590 e2490001 SUB r0,r9,#1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -