📄 lib_str.txt
字号:
;;;490 }
;;;491
;;;492 *pstr = (CPU_CHAR)0; /* Append NULL char (see Note #2c2). */
;;;493
;;;494
;;;495 return (pdest);
;;;496 }
000208 e12fff1e BX lr
|L1.524|
00020c e3510000 CMP r1,#0
000210 1a000001 BNE |L1.540|
000214 e3a00000 MOV r0,#0
000218 eafffff9 B |L1.516|
|L1.540|
00021c e3520000 CMP r2,#0
000220 1a000001 BNE |L1.556|
000224 e3a00000 MOV r0,#0
000228 eafffff5 B |L1.516|
|L1.556|
00022c e1a0c003 MOV r12,r3
000230 ea000000 B |L1.568|
|L1.564|
000234 e28cc001 ADD r12,r12,#1
|L1.568|
000238 e35c0000 CMP r12,#0
00023c 0a000002 BEQ |L1.588|
000240 e5dc0000 LDRB r0,[r12,#0]
000244 e3500000 CMP r0,#0
000248 1afffff9 BNE |L1.564|
|L1.588|
00024c e35c0000 CMP r12,#0
000250 1a000001 BNE |L1.604|
000254 e3a00000 MOV r0,#0
000258 eaffffe9 B |L1.516|
|L1.604|
00025c e1a0e00c MOV lr,r12
000260 e1a0c00e MOV r12,lr
000264 e28ee001 ADD lr,lr,#1
000268 e3a04000 MOV r4,#0
00026c ea000005 B |L1.648|
|L1.624|
000270 e5d10000 LDRB r0,[r1,#0]
000274 e5cc0000 STRB r0,[r12,#0]
000278 e28cc001 ADD r12,r12,#1
00027c e28ee001 ADD lr,lr,#1
000280 e2811001 ADD r1,r1,#1
000284 e2844001 ADD r4,r4,#1
|L1.648|
000288 e35e0000 CMP lr,#0
00028c 0a000006 BEQ |L1.684|
000290 e3510000 CMP r1,#0
000294 0a000004 BEQ |L1.684|
000298 e5d10000 LDRB r0,[r1,#0]
00029c e3500000 CMP r0,#0
0002a0 0a000001 BEQ |L1.684|
0002a4 e1540002 CMP r4,r2
0002a8 3afffff0 BCC |L1.624|
|L1.684|
0002ac e3a00000 MOV r0,#0
0002b0 e5cc0000 STRB r0,[r12,#0]
0002b4 e1a00003 MOV r0,r3
0002b8 eaffffd1 B |L1.516|
ENDP
Str_Cmp PROC
;;;560 CPU_CHAR *p2_str)
;;;561 {
0002bc e92d4010 PUSH {r4,lr}
0002c0 e1a02000 MOV r2,r0
;;;562 CPU_CHAR *p1_str_next;
;;;563 CPU_CHAR *p2_str_next;
;;;564 CPU_INT16S cmp_val;
;;;565
;;;566
;;;567 if (p1_str == (CPU_CHAR *)0) {
0002c4 e3520000 CMP r2,#0
0002c8 1a000008 BNE |L1.752|
;;;568 if (p2_str == (CPU_CHAR *)0) {
0002cc e3510000 CMP r1,#0
0002d0 1a000002 BNE |L1.736|
;;;569 return ((CPU_INT16S)0); /* If BOTH str ptrs NULL, rtn 0 (see Note #2a). */
0002d4 e3a00000 MOV r0,#0
|L1.728|
0002d8 e8bd4010 POP {r4,lr}
;;;570 }
;;;571 cmp_val = (CPU_INT16S)0 - (CPU_INT16S)(*p2_str);
;;;572 return (cmp_val); /* If p1_str NULL, rtn neg p2_str val (see Note #2b). */
;;;573 }
;;;574 if (p2_str == (CPU_CHAR *)0) {
;;;575 cmp_val = (CPU_INT16S)(*p1_str);
;;;576 return (cmp_val); /* If p2_str NULL, rtn pos p1_str val (see Note #2c). */
;;;577 }
;;;578
;;;579
;;;580 p1_str_next = p1_str;
;;;581 p2_str_next = p2_str;
;;;582 p1_str_next++;
;;;583 p2_str_next++;
;;;584 while ((*p1_str == *p2_str) && /* Cmp strs until non-matching char (see Note #2d) .. */
;;;585 (*p1_str != (CPU_CHAR )0) && /* .. or NULL char(s) (see Note #2e) .. */
;;;586 ( p1_str_next != (CPU_CHAR *)0) && /* .. or NULL ptr(s) found (see Notes #2f, #2g, & #2h). */
;;;587 ( p2_str_next != (CPU_CHAR *)0)) {
;;;588 p1_str_next++;
;;;589 p2_str_next++;
;;;590 p1_str++;
;;;591 p2_str++;
;;;592 }
;;;593
;;;594
;;;595 if (*p1_str != *p2_str) { /* If strs NOT identical, ... */
;;;596 cmp_val = (CPU_INT16S)(*p1_str) - (CPU_INT16S)(*p2_str); /* ... calc & rtn char diff (see Note #2d1). */
;;;597
;;;598 } else if (*p1_str == (CPU_CHAR)0) { /* If NULL char(s) found, ... */
;;;599 cmp_val = 0; /* ... strs identical; rtn 0 (see Note #2e). */
;;;600
;;;601 } else {
;;;602 if (p1_str_next == (CPU_CHAR *)0) {
;;;603 if (p2_str_next == (CPU_CHAR *)0) { /* If BOTH next str ptrs NULL, ... */
;;;604 cmp_val = (CPU_INT16S)0; /* ... rtn 0 (see Note #2f). */
;;;605 } else { /* If p1_str_next NULL, ... */
;;;606 cmp_val = (CPU_INT16S)0 - (CPU_INT16S)(*p2_str_next); /* ... rtn neg p2_str_next val (see Note #2g). */
;;;607 }
;;;608 } else { /* If p2_str_next NULL, ... */
;;;609 cmp_val = (CPU_INT16S)(*p1_str_next); /* ... rtn pos p1_str_next val (see Note #2h). */
;;;610 }
;;;611 }
;;;612
;;;613
;;;614 return (cmp_val);
;;;615 }
0002dc e12fff1e BX lr
|L1.736|
0002e0 e5d10000 LDRB r0,[r1,#0]
0002e4 e260c000 RSB r12,r0,#0
0002e8 e1a0000c MOV r0,r12
0002ec eafffff9 B |L1.728|
|L1.752|
0002f0 e3510000 CMP r1,#0
0002f4 1a000002 BNE |L1.772|
0002f8 e5d2c000 LDRB r12,[r2,#0]
0002fc e1a0000c MOV r0,r12
000300 eafffff4 B |L1.728|
|L1.772|
000304 e1a03002 MOV r3,r2
000308 e1a0e001 MOV lr,r1
00030c e1a02003 MOV r2,r3
000310 e2833001 ADD r3,r3,#1
000314 e1a0100e MOV r1,lr
000318 e28ee001 ADD lr,lr,#1
00031c ea000003 B |L1.816|
|L1.800|
000320 e2833001 ADD r3,r3,#1
000324 e28ee001 ADD lr,lr,#1
000328 e2822001 ADD r2,r2,#1
00032c e2811001 ADD r1,r1,#1
|L1.816|
000330 e5d20000 LDRB r0,[r2,#0]
000334 e5d14000 LDRB r4,[r1,#0]
000338 e1500004 CMP r0,r4
00033c 1a000006 BNE |L1.860|
000340 e5d20000 LDRB r0,[r2,#0]
000344 e3500000 CMP r0,#0
000348 0a000003 BEQ |L1.860|
00034c e3530000 CMP r3,#0
000350 0a000001 BEQ |L1.860|
000354 e35e0000 CMP lr,#0
000358 1afffff0 BNE |L1.800|
|L1.860|
00035c e5d20000 LDRB r0,[r2,#0]
000360 e5d14000 LDRB r4,[r1,#0]
000364 e1500004 CMP r0,r4
000368 0a000003 BEQ |L1.892|
00036c e5d20000 LDRB r0,[r2,#0]
000370 e5d14000 LDRB r4,[r1,#0]
000374 e040c004 SUB r12,r0,r4
000378 ea00000e B |L1.952|
|L1.892|
00037c e5d20000 LDRB r0,[r2,#0]
000380 e3500000 CMP r0,#0
000384 1a000001 BNE |L1.912|
000388 e3a0c000 MOV r12,#0
00038c ea000009 B |L1.952|
|L1.912|
000390 e3530000 CMP r3,#0
000394 1a000006 BNE |L1.948|
000398 e35e0000 CMP lr,#0
00039c 1a000001 BNE |L1.936|
0003a0 e3a0c000 MOV r12,#0
0003a4 ea000003 B |L1.952|
|L1.936|
0003a8 e5de0000 LDRB r0,[lr,#0]
0003ac e260c000 RSB r12,r0,#0
0003b0 ea000000 B |L1.952|
|L1.948|
0003b4 e5d3c000 LDRB r12,[r3,#0]
|L1.952|
0003b8 e1a0000c MOV r0,r12
0003bc eaffffc5 B |L1.728|
ENDP
Str_Cmp_N PROC
;;;688 CPU_SIZE_T len_max)
;;;689 {
0003c0 e92d4070 PUSH {r4-r6,lr}
0003c4 e1a03000 MOV r3,r0
;;;690 CPU_CHAR *p1_str_next;
;;;691 CPU_CHAR *p2_str_next;
;;;692 CPU_INT16S cmp_val;
;;;693 CPU_SIZE_T cmp_len;
;;;694
;;;695
;;;696 if (len_max == 0) { /* If cmp len equals zero, rtn 0 (see Note #2i). */
0003c8 e3520000 CMP r2,#0
0003cc 1a000002 BNE |L1.988|
;;;697 return ((CPU_INT16S)0);
0003d0 e3a00000 MOV r0,#0
|L1.980|
0003d4 e8bd4070 POP {r4-r6,lr}
;;;698 }
;;;699
;;;700 if (p1_str == (CPU_CHAR *)0) {
;;;701 if (p2_str == (CPU_CHAR *)0) {
;;;702 return ((CPU_INT16S)0); /* If BOTH str ptrs NULL, rtn 0 (see Note #2a). */
;;;703 }
;;;704 cmp_val = (CPU_INT16S)0 - (CPU_INT16S)(*p2_str);
;;;705 return (cmp_val); /* If p1_str NULL, rtn neg p2_str val (see Note #2b). */
;;;706 }
;;;707 if (p2_str == (CPU_CHAR *)0) {
;;;708 cmp_val = (CPU_INT16S)(*p1_str);
;;;709 return (cmp_val); /* If p2_str NULL, rtn pos p1_str val (see Note #2c). */
;;;710 }
;;;711
;;;712
;;;713 p1_str_next = p1_str;
;;;714 p2_str_next = p2_str;
;;;715 p1_str_next++;
;;;716 p2_str_next++;
;;;717 cmp_len = 0;
;;;718 while ((*p1_str == *p2_str) && /* Cmp strs until non-matching char (see Note #2d) .. */
;;;719 (*p1_str != (CPU_CHAR )0) && /* .. or NULL char(s) (see Note #2e) .. */
;;;720 ( p1_str_next != (CPU_CHAR *)0) && /* .. or NULL ptr(s) found (see Notes #2f, #2g, & #2h); */
;;;721 ( p2_str_next != (CPU_CHAR *)0) &&
;;;722 ( cmp_len < (CPU_SIZE_T)len_max)) { /* .. or len nbr chars cmp'd (see Note #2j). */
;;;723 p1_str_next++;
;;;724 p2_str_next++;
;;;725 p1_str++;
;;;726 p2_str++;
;;;727 cmp_len++;
;;;728 }
;;;729
;;;730
;;;731 if (cmp_len == len_max) { /* If strs identical for len nbr of chars, */
;;;732 return ((CPU_INT16S)0); /* ... rtn 0 (see Note #2j). */
;;;733 }
;;;734
;;;735 if (*p1_str != *p2_str) { /* If strs NOT identical, ... */
;;;736 cmp_val = (CPU_INT16S)(*p1_str) - (CPU_INT16S)(*p2_str); /* ... calc & rtn char diff (see Note #2d1). */
;;;737
;;;738 } else if (*p1_str == (CPU_CHAR)0) { /* If NULL char(s) found, ... */
;;;739 cmp_val = 0; /* ... strs identical; rtn 0 (see Note #2e). */
;;;740
;;;741 } else {
;;;742 if (p1_str_next == (CPU_CHAR *)0) {
;;;743 if (p2_str_next == (CPU_CHAR *)0) { /* If BOTH next str ptrs NULL, ... */
;;;744 cmp_val = (CPU_INT16S)0; /* ... rtn 0 (see Note #2f). */
;;;745 } else { /* If p1_str_next NULL, ... */
;;;746 cmp_val = (CPU_INT16S)0 - (CPU_INT16S)(*p2_str_next); /* ... rtn neg p2_str_next val (see Note #2g). */
;;;747 }
;;;748 } else { /* If p2_str_next NULL, ... */
;;;749 cmp_val = (CPU_INT16S)(*p1_str_next); /* ... rtn pos p1_str_next val (see Note #2h). */
;;;750 }
;;;751 }
;;;752
;;;753
;;;754 return (cmp_val);
;;;755 }
0003d8 e12fff1e BX lr
|L1.988|
0003dc e3530000 CMP r3,#0
0003e0 1a000007 BNE |L1.1028|
0003e4 e3510000 CMP r1,#0
0003e8 1a000001 BNE |L1.1012|
0003ec e3a00000 MOV r0,#0
0003f0 eafffff7 B |L1.980|
|L1.1012|
0003f4 e5d10000 LDRB r0,[r1,#0]
0003f8 e2604000 RSB r4,r0,#0
0003fc e1a00004 MOV r0,r4
000400 eafffff3 B |L1.980|
|L1.1028|
000404 e3510000 CMP r1,#0
000408 1a000002 BNE |L1.1048|
00040c e5d34000 LDRB r4,[r3,#0]
000410 e1a00004 MOV r0,r4
000414 eaffffee B |L1.980|
|L1.1048|
000418 e1a0c003 MOV r12,r3
00041c e1a0e001 MOV lr,r1
000420 e1a0300c MOV r3,r12
000424 e28cc001 ADD r12,r12,#1
000428 e1a0100e MOV r1,lr
00042c e28ee001 ADD lr,lr,#1
000430 e3a05000 MOV r5,#0
000434 ea000004 B |L1.1100|
|L1.1080|
000438 e28cc001 ADD r12,r12,#1
00043c e28ee001 ADD lr,lr,#1
000440 e2833001 ADD r3,r3,#1
000444 e2811001 ADD r1,r1,#1
000448 e2855001 ADD r5,r5,#1
|L1.1100|
00044c e5d30000 LDRB r0,[r3,#0]
000450 e5d16000 LDRB r6,[r1,#0]
000454 e1500006 CMP r0,r6
000458 1a000008 BNE |L1.1152|
00045c e5d30000 LDRB r0,[r3,#0]
000460 e3500000 CMP r0,#0
000464 0a000005 BEQ |L1.1152|
000468 e35c0000 CMP r12,#0
00046c 0a000003 BEQ |L1.1152|
000470 e35e0000 CMP lr,#0
000474 0a000001 BEQ |L1.1152|
000478 e1550002 CMP r5,r2
00047c 3affffed BCC |L1.1080|
|L1.1152|
000480 e1550002 CMP r5,r2
000484 1a000001 BNE |L1.1168|
000488 e3a00000 MOV r0,#0
00048c eaffffd0 B |L1.980|
|L1.1168|
000490 e5d30000 LDRB r0,[r3,#0]
000494 e5d16000 LDRB r6,[r1,#0]
000498 e1500006 CMP r0,r6
00049c 0a000003 BEQ |L1.1200|
0004a0 e5d30000 LDRB r0,[r3,#0]
0004a4 e5d16000 LDRB r6,[r1,#0]
0004a8 e0404006 SUB r4,r0,r6
0004ac ea00000e B |L1.1260|
|L1.1200|
0004b0 e5d30000 LDRB r0,[r3,#0]
0004b4 e3500000 CMP r0,#0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -