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

📄 lib_str.txt

📁 stm32 ucos 精简移殖版本 不需作任何修改直接便可运行。包含串口 定时器
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;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 + -