📄 lib_str.txt
字号:
|L1.216|
0000d8 b911 CBNZ r1,|L1.224|
0000da bc30 POP {r4,r5}
0000dc 2000 MOVS r0,#0
0000de 4770 BX lr
|L1.224|
0000e0 b912 CBNZ r2,|L1.232|
0000e2 bc30 POP {r4,r5}
0000e4 2000 MOVS r0,#0
0000e6 4770 BX lr
|L1.232|
0000e8 4603 MOV r3,r0
0000ea e000 B |L1.238|
|L1.236|
0000ec 1c5b ADDS r3,r3,#1
|L1.238|
0000ee b123 CBZ r3,|L1.250|
0000f0 f893f893 LDRB r12,[r3,#0]
0000f4 f1bcf1bc CMP r12,#0
0000f8 d1f8 BNE |L1.236|
|L1.250|
0000fa b913 CBNZ r3,|L1.258|
0000fc bc30 POP {r4,r5}
0000fe 2000 MOVS r0,#0
000100 4770 BX lr
|L1.258|
000102 1c5c ADDS r4,r3,#1
000104 f04ff04f MOV r12,#0
000108 e005 B |L1.278|
|L1.266|
00010a 701d STRB r5,[r3,#0]
00010c 1c5b ADDS r3,r3,#1
00010e 1c64 ADDS r4,r4,#1
000110 1c49 ADDS r1,r1,#1
000112 f10cf10c ADD r12,r12,#1
|L1.278|
000116 b124 CBZ r4,|L1.290|
000118 b119 CBZ r1,|L1.290|
00011a 780d LDRB r5,[r1,#0]
00011c b10d CBZ r5,|L1.290|
00011e 4594 CMP r12,r2
000120 d3f3 BCC |L1.266|
|L1.290|
000122 2100 MOVS r1,#0
000124 7019 STRB r1,[r3,#0]
000126 bc30 POP {r4,r5}
000128 4770 BX lr
;;;498
ENDP
Str_Cmp PROC
;;;561 CPU_CHAR *p2_str)
;;;562 {
00012a b410 PUSH {r4}
;;;563 CPU_CHAR *p1_str_next;
;;;564 CPU_CHAR *p2_str_next;
;;;565 CPU_INT16S cmp_val;
;;;566
;;;567
;;;568 if (p1_str == (CPU_CHAR *)0) {
00012c b938 CBNZ r0,|L1.318|
;;;569 if (p2_str == (CPU_CHAR *)0) {
00012e b911 CBNZ r1,|L1.310|
;;;570 return ((CPU_INT16S)0); /* If BOTH str ptrs NULL, rtn 0 (see Note #2a). */
;;;571 }
;;;572 cmp_val = (CPU_INT16S)0 - (CPU_INT16S)(*p2_str);
;;;573 return (cmp_val); /* If p1_str NULL, rtn neg p2_str val (see Note #2b). */
;;;574 }
;;;575 if (p2_str == (CPU_CHAR *)0) {
;;;576 cmp_val = (CPU_INT16S)(*p1_str);
;;;577 return (cmp_val); /* If p2_str NULL, rtn pos p1_str val (see Note #2c). */
;;;578 }
;;;579
;;;580
;;;581 p1_str_next = p1_str;
;;;582 p2_str_next = p2_str;
;;;583 p1_str_next++;
;;;584 p2_str_next++;
;;;585 while ((*p1_str == *p2_str) && /* Cmp strs until non-matching char (see Note #2d) .. */
;;;586 (*p1_str != (CPU_CHAR )0) && /* .. or NULL char(s) (see Note #2e) .. */
;;;587 ( p1_str_next != (CPU_CHAR *)0) && /* .. or NULL ptr(s) found (see Notes #2f, #2g, & #2h). */
;;;588 ( p2_str_next != (CPU_CHAR *)0)) {
;;;589 p1_str_next++;
;;;590 p2_str_next++;
;;;591 p1_str++;
;;;592 p2_str++;
;;;593 }
;;;594
;;;595
;;;596 if (*p1_str != *p2_str) { /* If strs NOT identical, ... */
;;;597 cmp_val = (CPU_INT16S)(*p1_str) - (CPU_INT16S)(*p2_str); /* ... calc & rtn char diff (see Note #2d1). */
;;;598
;;;599 } else if (*p1_str == (CPU_CHAR)0) { /* If NULL char(s) found, ... */
;;;600 cmp_val = 0; /* ... strs identical; rtn 0 (see Note #2e). */
;;;601
;;;602 } else {
;;;603 if (p1_str_next == (CPU_CHAR *)0) {
;;;604 if (p2_str_next == (CPU_CHAR *)0) { /* If BOTH next str ptrs NULL, ... */
;;;605 cmp_val = (CPU_INT16S)0; /* ... rtn 0 (see Note #2f). */
;;;606 } else { /* If p1_str_next NULL, ... */
;;;607 cmp_val = (CPU_INT16S)0 - (CPU_INT16S)(*p2_str_next); /* ... rtn neg p2_str_next val (see Note #2g). */
;;;608 }
;;;609 } else { /* If p2_str_next NULL, ... */
;;;610 cmp_val = (CPU_INT16S)(*p1_str_next); /* ... rtn pos p1_str_next val (see Note #2h). */
;;;611 }
;;;612 }
;;;613
;;;614
;;;615 return (cmp_val);
;;;616 }
000130 bc10 POP {r4}
000132 2000 MOVS r0,#0
000134 4770 BX lr
|L1.310|
000136 7808 LDRB r0,[r1,#0]
000138 4240 RSBS r0,r0,#0
00013a bc10 POP {r4}
00013c 4770 BX lr
|L1.318|
00013e b911 CBNZ r1,|L1.326|
000140 7800 LDRB r0,[r0,#0]
000142 bc10 POP {r4}
000144 4770 BX lr
|L1.326|
000146 1c42 ADDS r2,r0,#1
000148 1c4b ADDS r3,r1,#1
00014a e003 B |L1.340|
|L1.332|
00014c 1c52 ADDS r2,r2,#1
00014e 1c5b ADDS r3,r3,#1
000150 1c40 ADDS r0,r0,#1
000152 1c49 ADDS r1,r1,#1
|L1.340|
000154 f890f890 LDRB r12,[r0,#0]
000158 780c LDRB r4,[r1,#0]
00015a 45a4 CMP r12,r4
00015c d105 BNE |L1.362|
00015e f1bcf1bc CMP r12,#0
000162 d002 BEQ |L1.362|
000164 b10a CBZ r2,|L1.362|
000166 2b00 CMP r3,#0
000168 d1f0 BNE |L1.332|
|L1.362|
00016a 7804 LDRB r4,[r0,#0]
00016c 7808 LDRB r0,[r1,#0]
00016e 4284 CMP r4,r0
000170 d003 BEQ |L1.378|
000172 bc10 POP {r4}
000174 ebacebac SUB r0,r12,r0
000178 4770 BX lr
|L1.378|
00017a f1bcf1bc CMP r12,#0
00017e d102 BNE |L1.390|
000180 bc10 POP {r4}
000182 2000 MOVS r0,#0
000184 4770 BX lr
|L1.390|
000186 b93a CBNZ r2,|L1.408|
000188 b913 CBNZ r3,|L1.400|
00018a bc10 POP {r4}
00018c 2000 MOVS r0,#0
00018e 4770 BX lr
|L1.400|
000190 7818 LDRB r0,[r3,#0]
000192 bc10 POP {r4}
000194 4240 RSBS r0,r0,#0
000196 4770 BX lr
|L1.408|
000198 7810 LDRB r0,[r2,#0]
00019a bc10 POP {r4}
00019c 4770 BX lr
;;;617
ENDP
Str_Cmp_N PROC
;;;689 CPU_SIZE_T len_max)
;;;690 {
00019e b470 PUSH {r4-r6}
;;;691 CPU_CHAR *p1_str_next;
;;;692 CPU_CHAR *p2_str_next;
;;;693 CPU_INT16S cmp_val;
;;;694 CPU_SIZE_T cmp_len;
;;;695
;;;696
;;;697 if (len_max == 0) { /* If cmp len equals zero, rtn 0 (see Note #2i). */
0001a0 b912 CBNZ r2,|L1.424|
;;;698 return ((CPU_INT16S)0);
;;;699 }
;;;700
;;;701 if (p1_str == (CPU_CHAR *)0) {
;;;702 if (p2_str == (CPU_CHAR *)0) {
;;;703 return ((CPU_INT16S)0); /* If BOTH str ptrs NULL, rtn 0 (see Note #2a). */
;;;704 }
;;;705 cmp_val = (CPU_INT16S)0 - (CPU_INT16S)(*p2_str);
;;;706 return (cmp_val); /* If p1_str NULL, rtn neg p2_str val (see Note #2b). */
;;;707 }
;;;708 if (p2_str == (CPU_CHAR *)0) {
;;;709 cmp_val = (CPU_INT16S)(*p1_str);
;;;710 return (cmp_val); /* If p2_str NULL, rtn pos p1_str val (see Note #2c). */
;;;711 }
;;;712
;;;713
;;;714 p1_str_next = p1_str;
;;;715 p2_str_next = p2_str;
;;;716 p1_str_next++;
;;;717 p2_str_next++;
;;;718 cmp_len = 0;
;;;719 while ((*p1_str == *p2_str) && /* Cmp strs until non-matching char (see Note #2d) .. */
;;;720 (*p1_str != (CPU_CHAR )0) && /* .. or NULL char(s) (see Note #2e) .. */
;;;721 ( p1_str_next != (CPU_CHAR *)0) && /* .. or NULL ptr(s) found (see Notes #2f, #2g, & #2h); */
;;;722 ( p2_str_next != (CPU_CHAR *)0) &&
;;;723 ( cmp_len < (CPU_SIZE_T)len_max)) { /* .. or len nbr chars cmp'd (see Note #2j). */
;;;724 p1_str_next++;
;;;725 p2_str_next++;
;;;726 p1_str++;
;;;727 p2_str++;
;;;728 cmp_len++;
;;;729 }
;;;730
;;;731
;;;732 if (cmp_len == len_max) { /* If strs identical for len nbr of chars, */
;;;733 return ((CPU_INT16S)0); /* ... rtn 0 (see Note #2j). */
;;;734 }
;;;735
;;;736 if (*p1_str != *p2_str) { /* If strs NOT identical, ... */
;;;737 cmp_val = (CPU_INT16S)(*p1_str) - (CPU_INT16S)(*p2_str); /* ... calc & rtn char diff (see Note #2d1). */
;;;738
;;;739 } else if (*p1_str == (CPU_CHAR)0) { /* If NULL char(s) found, ... */
;;;740 cmp_val = 0; /* ... strs identical; rtn 0 (see Note #2e). */
;;;741
;;;742 } else {
;;;743 if (p1_str_next == (CPU_CHAR *)0) {
;;;744 if (p2_str_next == (CPU_CHAR *)0) { /* If BOTH next str ptrs NULL, ... */
;;;745 cmp_val = (CPU_INT16S)0; /* ... rtn 0 (see Note #2f). */
;;;746 } else { /* If p1_str_next NULL, ... */
;;;747 cmp_val = (CPU_INT16S)0 - (CPU_INT16S)(*p2_str_next); /* ... rtn neg p2_str_next val (see Note #2g). */
;;;748 }
;;;749 } else { /* If p2_str_next NULL, ... */
;;;750 cmp_val = (CPU_INT16S)(*p1_str_next); /* ... rtn pos p1_str_next val (see Note #2h). */
;;;751 }
;;;752 }
;;;753
;;;754
;;;755 return (cmp_val);
;;;756 }
0001a2 bc70 POP {r4-r6}
0001a4 2000 MOVS r0,#0
0001a6 4770 BX lr
|L1.424|
0001a8 b938 CBNZ r0,|L1.442|
0001aa b911 CBNZ r1,|L1.434|
0001ac bc70 POP {r4-r6}
0001ae 2000 MOVS r0,#0
0001b0 4770 BX lr
|L1.434|
0001b2 7808 LDRB r0,[r1,#0]
0001b4 4240 RSBS r0,r0,#0
0001b6 bc70 POP {r4-r6}
0001b8 4770 BX lr
|L1.442|
0001ba b911 CBNZ r1,|L1.450|
0001bc 7800 LDRB r0,[r0,#0]
0001be bc70 POP {r4-r6}
0001c0 4770 BX lr
|L1.450|
0001c2 1c43 ADDS r3,r0,#1
0001c4 f101f101 ADD r12,r1,#1
0001c8 2400 MOVS r4,#0
0001ca e005 B |L1.472|
|L1.460|
0001cc 1c5b ADDS r3,r3,#1
0001ce f10cf10c ADD r12,r12,#1
0001d2 1c40 ADDS r0,r0,#1
0001d4 1c49 ADDS r1,r1,#1
0001d6 1c64 ADDS r4,r4,#1
|L1.472|
0001d8 7805 LDRB r5,[r0,#0]
0001da 780e LDRB r6,[r1,#0]
0001dc 42b5 CMP r5,r6
0001de d106 BNE |L1.494|
0001e0 b12d CBZ r5,|L1.494|
0001e2 b123 CBZ r3,|L1.494|
0001e4 f1bcf1bc CMP r12,#0
0001e8 d001 BEQ |L1.494|
0001ea 4294 CMP r4,r2
0001ec d3ee BCC |L1.460|
|L1.494|
0001ee 4294 CMP r4,r2
0001f0 d102 BNE |L1.504|
0001f2 bc70 POP {r4-r6}
0001f4 2000 MOVS r0,#0
0001f6 4770 BX lr
|L1.504|
0001f8 7802 LDRB r2,[r0,#0]
0001fa 7808 LDRB r0,[r1,#0]
0001fc 4282 CMP r2,r0
0001fe d002 BEQ |L1.518|
000200 1a28 SUBS r0,r5,r0
000202 bc70 POP {r4-r6}
000204 4770 BX lr
|L1.518|
000206 b915 CBNZ r5,|L1.526|
000208 bc70 POP {r4-r6}
00020a 2000 MOVS r0,#0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -