⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lib_str.txt

📁 ucos2.86版本结合STM板极支持包
💻 TXT
📖 第 1 页 / 共 3 页
字号:
                  |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 + -