📄 lib_str.txt
字号:
;;;485 ( len_cat < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars cat'd (see Note #2d). */
;;;486 *pstr = *pstr_cat;
;;;487 pstr++;
;;;488 pstr_next++;
;;;489 pstr_cat++;
;;;490 len_cat++;
;;;491 }
;;;492
;;;493 *pstr = (CPU_CHAR)0; /* Append NULL char (see Note #2c2). */
;;;494
;;;495
;;;496 return (pdest);
;;;497 }
0000c0 bd70 POP {r4-r6,pc}
|L1.194|
0000c2 b909 CBNZ r1,|L1.200|
0000c4 2000 MOVS r0,#0 ;461
0000c6 bd70 POP {r4-r6,pc}
|L1.200|
0000c8 b90a CBNZ r2,|L1.206|
0000ca 2000 MOVS r0,#0 ;465
0000cc bd70 POP {r4-r6,pc}
|L1.206|
0000ce 4603 MOV r3,r0 ;469
0000d0 e000 B |L1.212|
|L1.210|
0000d2 1c5b ADDS r3,r3,#1 ;472
|L1.212|
0000d4 b113 CBZ r3,|L1.220|
0000d6 781c LDRB r4,[r3,#0] ;471
0000d8 2c00 CMP r4,#0 ;471
0000da d1fa BNE |L1.210|
|L1.220|
0000dc b90b CBNZ r3,|L1.226|
0000de 2000 MOVS r0,#0 ;475
0000e0 bd70 POP {r4-r6,pc}
|L1.226|
0000e2 1c5d ADDS r5,r3,#1 ;479
0000e4 2400 MOVS r4,#0 ;480
0000e6 e004 B |L1.242|
|L1.232|
0000e8 701e STRB r6,[r3,#0] ;486
0000ea 1c5b ADDS r3,r3,#1 ;487
0000ec 1c6d ADDS r5,r5,#1 ;488
0000ee 1c49 ADDS r1,r1,#1 ;489
0000f0 1c64 ADDS r4,r4,#1 ;490
|L1.242|
0000f2 b125 CBZ r5,|L1.254|
0000f4 b119 CBZ r1,|L1.254|
0000f6 780e LDRB r6,[r1,#0] ;484
0000f8 b10e CBZ r6,|L1.254|
0000fa 4294 CMP r4,r2 ;485
0000fc d3f4 BCC |L1.232|
|L1.254|
0000fe 2100 MOVS r1,#0 ;493
000100 7019 STRB r1,[r3,#0] ;493
000102 bd70 POP {r4-r6,pc}
;;;498
ENDP
Str_Cmp PROC
;;;561 CPU_CHAR *p2_str)
;;;562 {
000104 b530 PUSH {r4,r5,lr}
;;;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) {
000106 b928 CBNZ r0,|L1.276|
;;;569 if (p2_str == (CPU_CHAR *)0) {
000108 b909 CBNZ r1,|L1.270|
;;;570 return ((CPU_INT16S)0); /* If BOTH str ptrs NULL, rtn 0 (see Note #2a). */
00010a 2000 MOVS r0,#0
;;;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 }
00010c bd30 POP {r4,r5,pc}
|L1.270|
00010e 7808 LDRB r0,[r1,#0] ;572
000110 4240 RSBS r0,r0,#0 ;572
000112 bd30 POP {r4,r5,pc}
|L1.276|
000114 b909 CBNZ r1,|L1.282|
000116 7800 LDRB r0,[r0,#0] ;576
000118 bd30 POP {r4,r5,pc}
|L1.282|
00011a 1c42 ADDS r2,r0,#1 ;583
00011c 1c4b ADDS r3,r1,#1 ;584
00011e e003 B |L1.296|
|L1.288|
000120 1c52 ADDS r2,r2,#1 ;589
000122 1c5b ADDS r3,r3,#1 ;590
000124 1c40 ADDS r0,r0,#1 ;591
000126 1c49 ADDS r1,r1,#1 ;592
|L1.296|
000128 7804 LDRB r4,[r0,#0] ;585
00012a 780d LDRB r5,[r1,#0] ;585
00012c 42ac CMP r4,r5 ;585
00012e d103 BNE |L1.312|
000130 b114 CBZ r4,|L1.312|
000132 b10a CBZ r2,|L1.312|
000134 2b00 CMP r3,#0 ;588
000136 d1f3 BNE |L1.288|
|L1.312|
000138 7805 LDRB r5,[r0,#0] ;596
00013a 7808 LDRB r0,[r1,#0] ;596
00013c 4285 CMP r5,r0 ;596
00013e d001 BEQ |L1.324|
000140 1a20 SUBS r0,r4,r0 ;597
000142 bd30 POP {r4,r5,pc}
|L1.324|
000144 b90c CBNZ r4,|L1.330|
000146 2000 MOVS r0,#0 ;600
000148 bd30 POP {r4,r5,pc}
|L1.330|
00014a b92a CBNZ r2,|L1.344|
00014c b90b CBNZ r3,|L1.338|
00014e 2000 MOVS r0,#0 ;605
000150 bd30 POP {r4,r5,pc}
|L1.338|
000152 7818 LDRB r0,[r3,#0] ;607
000154 4240 RSBS r0,r0,#0 ;607
000156 bd30 POP {r4,r5,pc}
|L1.344|
000158 7810 LDRB r0,[r2,#0] ;610
00015a bd30 POP {r4,r5,pc}
;;;617
ENDP
Str_Cmp_N PROC
;;;689 CPU_SIZE_T len_max)
;;;690 {
00015c b5f0 PUSH {r4-r7,lr}
;;;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). */
00015e b90a CBNZ r2,|L1.356|
;;;698 return ((CPU_INT16S)0);
000160 2000 MOVS r0,#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 }
000162 bdf0 POP {r4-r7,pc}
|L1.356|
000164 b928 CBNZ r0,|L1.370|
000166 b909 CBNZ r1,|L1.364|
000168 2000 MOVS r0,#0 ;703
00016a bdf0 POP {r4-r7,pc}
|L1.364|
00016c 7808 LDRB r0,[r1,#0] ;705
00016e 4240 RSBS r0,r0,#0 ;705
000170 bdf0 POP {r4-r7,pc}
|L1.370|
000172 b909 CBNZ r1,|L1.376|
000174 7800 LDRB r0,[r0,#0] ;709
000176 bdf0 POP {r4-r7,pc}
|L1.376|
000178 1c43 ADDS r3,r0,#1 ;716
00017a 1c4c ADDS r4,r1,#1 ;717
00017c 2500 MOVS r5,#0 ;718
00017e e004 B |L1.394|
|L1.384|
000180 1c5b ADDS r3,r3,#1 ;724
000182 1c64 ADDS r4,r4,#1 ;725
000184 1c40 ADDS r0,r0,#1 ;726
000186 1c49 ADDS r1,r1,#1 ;727
000188 1c6d ADDS r5,r5,#1 ;728
|L1.394|
00018a 7806 LDRB r6,[r0,#0] ;719
00018c 780f LDRB r7,[r1,#0] ;719
00018e 42be CMP r6,r7 ;719
000190 d104 BNE |L1.412|
000192 b11e CBZ r6,|L1.412|
000194 b113 CBZ r3,|L1.412|
000196 b10c CBZ r4,|L1.412|
000198 4295 CMP r5,r2 ;723
00019a d3f1 BCC |L1.384|
|L1.412|
00019c 4295 CMP r5,r2 ;732
00019e d101 BNE |L1.420|
0001a0 2000 MOVS r0,#0 ;733
0001a2 bdf0 POP {r4-r7,pc}
|L1.420|
0001a4 7802 LDRB r2,[r0,#0] ;736
0001a6 7808 LDRB r0,[r1,#0] ;736
0001a8 4282 CMP r2,r0 ;736
0001aa d001 BEQ |L1.432|
0001ac 1a30 SUBS r0,r6,r0 ;737
0001ae bdf0 POP {r4-r7,pc}
|L1.432|
0001b0 b90e CBNZ r6,|L1.438|
0001b2 2000 MOVS r0,#0 ;740
0001b4 bdf0 POP {r4-r7,pc}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -