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

📄 lib_str.txt

📁 ucos2.86版本结合STM板极支持包
💻 TXT
📖 第 1 页 / 共 3 页
字号:
00020c  4770              BX       lr
                  |L1.526|
00020e  b953              CBNZ     r3,|L1.550|
000210  f1bcf1bc          CMP      r12,#0
000214  d102              BNE      |L1.540|
000216  bc70              POP      {r4-r6}
000218  2000              MOVS     r0,#0
00021a  4770              BX       lr
                  |L1.540|
00021c  f89cf89c          LDRB     r0,[r12,#0]
000220  bc70              POP      {r4-r6}
000222  4240              RSBS     r0,r0,#0
000224  4770              BX       lr
                  |L1.550|
000226  7818              LDRB     r0,[r3,#0]
000228  bc70              POP      {r4-r6}
00022a  4770              BX       lr
;;;757    
                          ENDP

                  Str_Char PROC
;;;801    
;;;802        if (pstr == (CPU_CHAR *)0) {                                /* Rtn NULL if srch str ptr NULL (see Note #2a).        */
00022c  b908              CBNZ     r0,|L1.562|
;;;803            return ((CPU_CHAR *)0);
00022e  2000              MOVS     r0,#0
                  |L1.560|
;;;804        }
;;;805    
;;;806    
;;;807        pstr_next = pstr;
;;;808        pstr_next++;
;;;809        while (( pstr_next != (CPU_CHAR *)0) &&                     /* Srch str until NULL ptr(s) (see Note #2b) ...        */
;;;810               (*pstr      != (CPU_CHAR  )0) &&                     /* ... or NULL char           (see Note #2c) ...        */
;;;811               (*pstr      != (CPU_CHAR  )srch_char)) {             /* ... or srch char found     (see Note #2d).           */
;;;812            pstr++;
;;;813            pstr_next++;
;;;814        }
;;;815    
;;;816    
;;;817        if (*pstr != srch_char) {                                   /* If srch char NOT found, str points to NULL; ...      */
;;;818            return ((CPU_CHAR *)0);                                 /* ... rtn NULL (see Notes #2b & #2c).                  */
;;;819        }
;;;820    
;;;821        return (pstr);                                              /* Else rtn ptr to found srch char (see Note #2d).      */
;;;822    }
000230  4770              BX       lr
                  |L1.562|
000232  1c42              ADDS     r2,r0,#1
000234  e001              B        |L1.570|
                  |L1.566|
000236  1c40              ADDS     r0,r0,#1
000238  1c52              ADDS     r2,r2,#1
                  |L1.570|
00023a  b11a              CBZ      r2,|L1.580|
00023c  7803              LDRB     r3,[r0,#0]
00023e  b10b              CBZ      r3,|L1.580|
000240  428b              CMP      r3,r1
000242  d1f8              BNE      |L1.566|
                  |L1.580|
000244  7802              LDRB     r2,[r0,#0]
000246  428a              CMP      r2,r1
000248  d0f2              BEQ      |L1.560|
00024a  2000              MOVS     r0,#0
00024c  4770              BX       lr
;;;823    
                          ENDP

                  Str_Char_N PROC
;;;874                           CPU_CHAR     srch_char)
;;;875    {
00024e  b410              PUSH     {r4}
;;;876        CPU_CHAR    *pstr_next;
;;;877        CPU_SIZE_T   len_srch;
;;;878    
;;;879    
;;;880        if (pstr == (CPU_CHAR *)0) {                                /* Rtn NULL if srch str ptr NULL    (see Note #2a).     */
000250  b910              CBNZ     r0,|L1.600|
;;;881            return ((CPU_CHAR *)0);
;;;882        }
;;;883    
;;;884        if (len_max == (CPU_SIZE_T)0) {                             /* Rtn NULL if srch len equals zero (see Note #2e).     */
;;;885            return ((CPU_CHAR *)0);
;;;886        }
;;;887    
;;;888    
;;;889        pstr_next = pstr;
;;;890        pstr_next++;
;;;891        len_srch  = 0;
;;;892        while (( pstr_next != (CPU_CHAR *)0)         &&             /* Srch str until NULL ptr(s)  (see Note #2b)  ...      */
;;;893               (*pstr      != (CPU_CHAR  )0)         &&             /* ... or NULL char            (see Note #2c)  ...      */
;;;894               (*pstr      != (CPU_CHAR  )srch_char) &&             /* ... or srch char found      (see Note #2d); ...      */
;;;895               ( len_srch  <  (CPU_SIZE_T)len_max)) {               /* ... or max nbr chars srch'd (see Note #2e).          */
;;;896            pstr++;
;;;897            pstr_next++;
;;;898            len_srch++;
;;;899        }
;;;900    
;;;901    
;;;902        if (*pstr != srch_char) {                                   /* If srch char NOT found, str points to NULL; ...      */
;;;903            return ((CPU_CHAR *)0);                                 /* ... rtn NULL (see Notes #2b & #2c).                  */
;;;904        }
;;;905    
;;;906        return (pstr);                                              /* Else rtn ptr to found srch char (see Note #2d).      */
;;;907    }
000252  bc10              POP      {r4}
000254  2000              MOVS     r0,#0
000256  4770              BX       lr
                  |L1.600|
000258  b911              CBNZ     r1,|L1.608|
00025a  2000              MOVS     r0,#0
                  |L1.604|
00025c  bc10              POP      {r4}
00025e  4770              BX       lr
                  |L1.608|
000260  f100f100          ADD      r12,r0,#1
000264  2300              MOVS     r3,#0
000266  e003              B        |L1.624|
                  |L1.616|
000268  1c40              ADDS     r0,r0,#1
00026a  f10cf10c          ADD      r12,r12,#1
00026e  1c5b              ADDS     r3,r3,#1
                  |L1.624|
000270  f1bcf1bc          CMP      r12,#0
000274  d005              BEQ      |L1.642|
000276  7804              LDRB     r4,[r0,#0]
000278  b11c              CBZ      r4,|L1.642|
00027a  4294              CMP      r4,r2
00027c  d001              BEQ      |L1.642|
00027e  428b              CMP      r3,r1
000280  d3f2              BCC      |L1.616|
                  |L1.642|
000282  7801              LDRB     r1,[r0,#0]
000284  4291              CMP      r1,r2
000286  d0e9              BEQ      |L1.604|
000288  bc10              POP      {r4}
00028a  2000              MOVS     r0,#0
00028c  4770              BX       lr
;;;908    
                          ENDP

                  Str_Char_Last PROC
;;;949                              CPU_CHAR   srch_char)
;;;950    {
00028e  b510              PUSH     {r4,lr}
000290  4603              MOV      r3,r0
000292  460c              MOV      r4,r1
;;;951        CPU_CHAR    *pstr_next;
;;;952        CPU_SIZE_T   str_len;
;;;953    
;;;954    
;;;955        if (pstr == (CPU_CHAR *)0) {                                /* Rtn NULL if srch str ptr NULL (see Note #2a).        */
000294  b90b              CBNZ     r3,|L1.666|
;;;956            return ((CPU_CHAR *)0);
000296  2000              MOVS     r0,#0
                  |L1.664|
;;;957        }
;;;958    
;;;959    
;;;960        pstr_next  = pstr;
;;;961        str_len    = Str_Len(pstr);
;;;962        pstr_next += str_len;
;;;963        while (( pstr_next != pstr) &&                              /* Srch str from end until beg (see Note #2c) ...       */
;;;964               (*pstr_next != srch_char)) {                         /* ... until srch char found   (see Note #2d).          */
;;;965            pstr_next--;
;;;966        }
;;;967    
;;;968    
;;;969        if (*pstr_next != srch_char) {                              /* If srch char NOT found, str points to NULL; ...      */
;;;970            return ((CPU_CHAR *)0);                                 /* ... rtn NULL (see Notes #2b & #2c).                  */
;;;971        }
;;;972    
;;;973        return (pstr_next);                                         /* Else rtn ptr to found srch char (see Note #2d).      */
;;;974    }
000298  bd10              POP      {r4,pc}
                  |L1.666|
00029a  4618              MOV      r0,r3
00029c  f7fff7ff          BL       Str_Len
0002a0  4418              ADD      r0,r0,r3
0002a2  e000              B        |L1.678|
                  |L1.676|
0002a4  1e40              SUBS     r0,r0,#1
                  |L1.678|
0002a6  4298              CMP      r0,r3
0002a8  d002              BEQ      |L1.688|
0002aa  7801              LDRB     r1,[r0,#0]
0002ac  42a1              CMP      r1,r4
0002ae  d1f9              BNE      |L1.676|
                  |L1.688|
0002b0  7801              LDRB     r1,[r0,#0]
0002b2  42a1              CMP      r1,r4
0002b4  d0f0              BEQ      |L1.664|
0002b6  2000              MOVS     r0,#0
0002b8  bd10              POP      {r4,pc}
;;;975    
                          ENDP

                  Str_Str PROC
;;;1019                       CPU_CHAR  *psrch_str)
;;;1020   {
0002ba  e92de92d          PUSH     {r4-r9,lr}
0002be  4605              MOV      r5,r0
0002c0  4689              MOV      r9,r1
;;;1021       CPU_SIZE_T    str_len;
;;;1022       CPU_SIZE_T    srch_str_len;
;;;1023       CPU_SIZE_T    srch_len;
;;;1024       CPU_SIZE_T    srch_ix;
;;;1025       CPU_BOOLEAN   srch_done;
;;;1026       CPU_INT16S    srch_cmp;
;;;1027       CPU_CHAR     *pstr_srch_ix;
;;;1028   
;;;1029                                                                   /* Rtn NULL if str ptr(s) NULL (see Note #2a).          */
;;;1030       if (pstr == (CPU_CHAR *)0) {
0002c2  b915              CBNZ     r5,|L1.714|
;;;1031           return ((CPU_CHAR *)0);
0002c4  2000              MOVS     r0,#0
0002c6  e8bde8bd          POP      {r4-r9,pc}
                  |L1.714|
;;;1032       }
;;;1033       if (psrch_str == (CPU_CHAR *)0) {
0002ca  f1b9f1b9          CMP      r9,#0
0002ce  d102              BNE      |L1.726|
;;;1034           return ((CPU_CHAR *)0);
0002d0  2000              MOVS     r0,#0
0002d2  e8bde8bd          POP      {r4-r9,pc}
                  |L1.726|
;;;1035       }
;;;1036   
;;;1037   
;;;1038       str_len      = Str_Len(pstr);
0002d6  4628              MOV      r0,r5
0002d8  f7fff7ff          BL       Str_Len
0002dc  4604              MOV      r4,r0
;;;1039       srch_str_len = Str_Len(psrch_str);
0002de  4648              MOV      r0,r9
0002e0  f7fff7ff          BL       Str_Len
0002e4  4606              MOV      r6,r0
;;;1040       if (srch_str_len > str_len) {                               /* If srch str len > str len, rtn NULL  (see Note #2b). */
0002e6  42a6              CMP      r6,r4
0002e8  d902              BLS      |L1.752|
;;;1041           return ((CPU_CHAR *)0);
0002ea  2000              MOVS     r0,#0
0002ec  e8bde8bd          POP      {r4-r9,pc}
                  |L1.752|
;;;1042       }
;;;1043       if (srch_str_len == 0) {                                    /* If srch str len = 0, srch str equal NULL str; ...    */
0002f0  b916              CBNZ     r6,|L1.760|
;;;1044           pstr_srch_ix = (CPU_CHAR *)(pstr + str_len);            /* ... rtn ptr to NULL str found in str (see Note #2c). */
0002f2  1928              ADDS     r0,r5,r4
0002f4  e8bde8bd          POP      {r4-r9,pc}
                  |L1.760|
;;;1045           return (pstr_srch_ix);
;;;1046       }
;;;1047   
;;;1048       srch_len  = str_len - srch_str_len;                         /* Determine srch len (see Note #2d1).                  */
0002f8  1ba7              SUBS     r7,r4,r6
;;;1049       srch_ix   = 0;
0002fa  2400              MOVS     r4,#0
;;;1050       srch_done = DEF_NO;
0002fc  2100              MOVS     r1,#0
;;;1051       while ((srch_done == DEF_NO) && (srch_ix <= srch_len)) {
0002fe  e00c              B        |L1.794|
                  |L1.768|
;;;1052           pstr_srch_ix = (CPU_CHAR *)(pstr + srch_ix);
000300  eb05eb05          ADD      r8,r5,r4
;;;1053           srch_cmp     =  Str_Cmp_N(pstr_srch_ix, psrch_str, srch_str_len);
000304  4632              MOV      r2,r6
000306  4649              MOV      r1,r9
000308  4640              MOV      r0,r8
00030a  f7fff7ff          BL       Str_Cmp_N
00030e  4603              MOV      r3,r0
;;;1054           srch_done    = (srch_cmp == 0) ? DEF_YES : DEF_NO;
000310  b90b              CBNZ     r3,|L1.790|
000312  2101              MOVS     r1,#1
000314  e000              B        |L1.792|
                  |L1.790|
000316  2100              MOVS     r1,#0
                  |L1.792|
;;;1055           srch_ix++;
000318  1c64              ADDS     r4,r4,#1
                  |L1.794|
00031a  b909              CBNZ     r1,|L1.800|
00031c  42bc              CMP      r4,r7
00031e  d9ef              BLS      |L1.768|
                  |L1.800|
;;;1056       }
;;;1057   
;;;1058   
;;;1059       if (srch_cmp != 0) {                                        /* If srch str NOT found, rtn NULL  (see Note #2d).     */
000320  b113              CBZ      r3,|L1.808|
;;;1060           return ((CPU_CHAR *)0);
000322  2000              MOVS     r0,#0
000324  e8bde8bd          POP      {r4-r9,pc}
                  |L1.808|
;;;1061       }
;;;1062   
;;;1063       return (pstr_srch_ix);                                      /* Rtn ptr to srch str found in str (see Note #2e).     */
000328  4640              MOV      r0,r8
;;;1064   }
00032a  e8bde8bd          POP      {r4-r9,pc}
;;;1065   
                          ENDP

⌨️ 快捷键说明

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