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

📄 lib_str.txt

📁 ucos2 is a file system for embedded applications which can be used on any media, for which you can p
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;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    }
000178  e12fff1e          BX       lr
                  |L1.380|
00017c  e28ee001          ADD      lr,lr,#1              ;488
000180  e2811001          ADD      r1,r1,#1              ;489
000184  e28cc001          ADD      r12,r12,#1            ;490
000188  e4c34001          STRB     r4,[r3],#1            ;486
                  |L1.396|
00018c  e35e0000          CMP      lr,#0                 ;482
000190  13510000          CMPNE    r1,#0                 ;483
000194  15d14000          LDRBNE   r4,[r1,#0]            ;484
000198  13540000          CMPNE    r4,#0                 ;484
00019c  115c0002          CMPNE    r12,r2                ;485
0001a0  3afffff5          BCC      |L1.380|
0001a4  e3a01000          MOV      r1,#0                 ;493
0001a8  e5c31000          STRB     r1,[r3,#0]            ;493
0001ac  eafffff0          B        |L1.372|
;;;498    
                          ENDP

                  Str_Cmp PROC
;;;567    
;;;568        if (p1_str == (CPU_CHAR *)0) {
0001b0  e3500000          CMP      r0,#0
0001b4  e52de004          PUSH     {lr}
0001b8  1a000003          BNE      |L1.460|
;;;569            if (p2_str == (CPU_CHAR *)0) {
0001bc  e3510000          CMP      r1,#0
;;;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);
0001c0  15d10000          LDRBNE   r0,[r1,#0]
;;;573            return (cmp_val);                                       /* If p1_str NULL, rtn neg p2_str val (see Note #2b).   */
0001c4  1a000022          BNE      |L1.596|
0001c8  ea000018          B        |L1.560|
                  |L1.460|
;;;574        }
;;;575        if (p2_str == (CPU_CHAR *)0) {
0001cc  e3510000          CMP      r1,#0
;;;576            cmp_val = (CPU_INT16S)(*p1_str);
0001d0  05d00000          LDRBEQ   r0,[r0,#0]
;;;577            return (cmp_val);                                       /* If p2_str NULL, rtn pos p1_str val (see Note #2c).   */
0001d4  0a000016          BEQ      |L1.564|
;;;578        }
;;;579    
;;;580    
;;;581        p1_str_next = p1_str;
;;;582        p2_str_next = p2_str;
;;;583        p1_str_next++;
0001d8  e2802001          ADD      r2,r0,#1
;;;584        p2_str_next++;
0001dc  e2813001          ADD      r3,r1,#1
;;;585        while ((*p1_str      == *p2_str)       &&                   /* Cmp strs until non-matching char (see Note #2d) ..   */
0001e0  ea000003          B        |L1.500|
                  |L1.484|
;;;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++;
0001e4  e2822001          ADD      r2,r2,#1
;;;590            p2_str_next++;
0001e8  e2833001          ADD      r3,r3,#1
;;;591            p1_str++;
0001ec  e2800001          ADD      r0,r0,#1
;;;592            p2_str++;
0001f0  e2811001          ADD      r1,r1,#1
                  |L1.500|
0001f4  e5d0c000          LDRB     r12,[r0,#0]           ;585
0001f8  e5d1e000          LDRB     lr,[r1,#0]            ;585
0001fc  e15c000e          CMP      r12,lr                ;585
000200  1a000003          BNE      |L1.532|
000204  e35c0000          CMP      r12,#0                ;586
000208  13520000          CMPNE    r2,#0                 ;587
00020c  13530000          CMPNE    r3,#0                 ;588
000210  1afffff3          BNE      |L1.484|
                  |L1.532|
;;;593        }
;;;594    
;;;595    
;;;596        if (*p1_str != *p2_str) {                                           /* If strs NOT identical, ...                   */
000214  e5d0e000          LDRB     lr,[r0,#0]
000218  e5d10000          LDRB     r0,[r1,#0]
00021c  e15e0000          CMP      lr,r0
;;;597             cmp_val = (CPU_INT16S)(*p1_str) - (CPU_INT16S)(*p2_str);       /* ... calc & rtn char diff  (see Note #2d1).   */
000220  104c0000          SUBNE    r0,r12,r0
000224  1a000002          BNE      |L1.564|
;;;598    
;;;599        } else if (*p1_str == (CPU_CHAR)0) {                                /* If NULL char(s) found, ...                   */
000228  e35c0000          CMP      r12,#0
00022c  1a000002          BNE      |L1.572|
                  |L1.560|
;;;600             cmp_val = 0;                                                   /* ... strs identical; rtn 0 (see Note #2e).    */
000230  e3a00000          MOV      r0,#0
                  |L1.564|
000234  e49de004          POP      {lr}
;;;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    }
000238  e12fff1e          BX       lr
                  |L1.572|
00023c  e3520000          CMP      r2,#0                 ;603
000240  15d20000          LDRBNE   r0,[r2,#0]            ;610
000244  1afffffa          BNE      |L1.564|
000248  e3530000          CMP      r3,#0                 ;604
00024c  0afffff7          BEQ      |L1.560|
000250  e5d30000          LDRB     r0,[r3,#0]            ;607
                  |L1.596|
000254  e2600000          RSB      r0,r0,#0              ;607
000258  eafffff5          B        |L1.564|
;;;617    
                          ENDP

                  Str_Cmp_N PROC
;;;689                           CPU_SIZE_T   len_max)
;;;690    {
00025c  e92d4030          PUSH     {r4,r5,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).   */
000260  e3520000          CMP      r2,#0
000264  0a000023          BEQ      |L1.760|
;;;698            return ((CPU_INT16S)0);
;;;699        }
;;;700    
;;;701        if (p1_str == (CPU_CHAR *)0) {
000268  e3500000          CMP      r0,#0
00026c  1a000003          BNE      |L1.640|
;;;702            if (p2_str == (CPU_CHAR *)0) {
000270  e3510000          CMP      r1,#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);
000274  15d10000          LDRBNE   r0,[r1,#0]
;;;706            return (cmp_val);                                       /* If p1_str NULL, rtn neg p2_str val (see Note #2b).   */
000278  1a000027          BNE      |L1.796|
00027c  ea00001d          B        |L1.760|
                  |L1.640|
;;;707        }
;;;708        if (p2_str == (CPU_CHAR *)0) {
000280  e3510000          CMP      r1,#0
;;;709            cmp_val = (CPU_INT16S)(*p1_str);
000284  05d00000          LDRBEQ   r0,[r0,#0]
;;;710            return (cmp_val);                                       /* If p2_str NULL, rtn pos p1_str val (see Note #2c).   */
000288  0a00001b          BEQ      |L1.764|
;;;711        }
;;;712    
;;;713    
;;;714        p1_str_next = p1_str;
;;;715        p2_str_next = p2_str;
;;;716        p1_str_next++;
00028c  e2803001          ADD      r3,r0,#1
;;;717        p2_str_next++;
000290  e281c001          ADD      r12,r1,#1
;;;718        cmp_len     = 0;
000294  e3a0e000          MOV      lr,#0
;;;719        while ((*p1_str      == *p2_str)       &&                   /* Cmp strs until non-matching char (see Note #2d) ..   */
000298  ea000004          B        |L1.688|
                  |L1.668|
;;;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++;
00029c  e2833001          ADD      r3,r3,#1
;;;725            p2_str_next++;
0002a0  e28cc001          ADD      r12,r12,#1
;;;726            p1_str++;
0002a4  e2800001          ADD      r0,r0,#1
;;;727            p2_str++;
0002a8  e2811001          ADD      r1,r1,#1
;;;728            cmp_len++;
0002ac  e28ee001          ADD      lr,lr,#1
                  |L1.688|
0002b0  e5d04000          LDRB     r4,[r0,#0]            ;719
0002b4  e5d15000          LDRB     r5,[r1,#0]            ;719
0002b8  e1540005          CMP      r4,r5                 ;719
0002bc  1a000004          BNE      |L1.724|
0002c0  e3540000          CMP      r4,#0                 ;720
0002c4  13530000          CMPNE    r3,#0                 ;721
0002c8  135c0000          CMPNE    r12,#0                ;722
0002cc  115e0002          CMPNE    lr,r2                 ;723
0002d0  3afffff1          BCC      |L1.668|
                  |L1.724|
;;;729        }
;;;730    
;;;731    
;;;732        if (cmp_len == len_max) {                                           /* If strs     identical for len nbr of chars,  */
0002d4  e15e0002          CMP      lr,r2
0002d8  0a000006          BEQ      |L1.760|
;;;733            return ((CPU_INT16S)0);                                         /* ... rtn 0 (see Note #2j).                    */
;;;734        }
;;;735    
;;;736        if (*p1_str != *p2_str) {                                           /* If strs NOT identical, ...                   */
0002dc  e5d02000          LDRB     r2,[r0,#0]
0002e0  e5d10000          LDRB     r0,[r1,#0]
0002e4  e1520000          CMP      r2,r0
;;;737             cmp_val = (CPU_INT16S)(*p1_str) - (CPU_INT16S)(*p2_str);       /* ... calc & rtn char diff  (see Note #2d1).   */
0002e8  10440000          SUBNE    r0,r4,r0
0002ec  1a000002          BNE      |L1.764|
;;;738    
;;;739        } else if (*p1_str == (CPU_CHAR)0) {                                /* If NULL char(s) found, ...                   */
0002f0  e3540000          CMP      r4,#0
0002f4  1a000002          BNE      |L1.772|
                  |L1.760|
;;;740             cmp_val = 0;                                                   /* ... strs identical; rtn 0 (see Note #2e).    */
0002f8  e3a00000          MOV      r0,#0
                  |L1.764|
0002fc  e8bd4030          POP      {r4,r5,lr}
;;;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    }
000300  e12fff1e          BX       lr
                  |L1.772|
000304  e3530000          CMP      r3,#0                 ;743
000308  15d30000          LDRBNE   r0,[r3,#0]            ;750
00030c  1afffffa          BNE      |L1.764|
000310  e35c0000          CMP      r12,#0                ;744
000314  0afffff7          BEQ      |L1.760|
000318  e5dc0000          LDRB     r0,[r12,#0]           ;747

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -