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

📄 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 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 919] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\lib_str.o --depend=.\rvmdk\lib_str.d --device=DARMP --apcs=interwork -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\ARM\Generic\RealView -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\uCOSView\Source -I..\..\..\..\..\uCOSView\Ports\ARM7\LPC2000\IAR -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\ARM\RealView -I..\..\..\..\..\uC-LIB -I..\..\..\..\..\uC-Probe\Target\Plugins\uCOS-II -IC:\Keil\ARM\INC\Philips --omf_browse=.\rvmdk\lib_str.crf ..\..\..\..\..\uC-LIB\lib_str.c]
                          ARM

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  Str_Len PROC
000000  e3a01000          MOV      r1,#0
000004  ea000001          B        |L1.16|
                  |L1.8|
000008  e2811001          ADD      r1,r1,#1
00000c  e2800001          ADD      r0,r0,#1
                  |L1.16|
000010  e3500000          CMP      r0,#0
000014  15d02000          LDRBNE   r2,[r0,#0]
000018  13520000          CMPNE    r2,#0
00001c  1afffff9          BNE      |L1.8|
000020  e1a00001          MOV      r0,r1
000024  e12fff1e          BX       lr
                          ENDP

                  Str_Copy PROC
;;;200                                                                    /* Rtn NULL if str ptr(s) NULL (see Note #2a).          */
;;;201        if (pdest == (CPU_CHAR *)0) {
000028  e3500000          CMP      r0,#0
;;;202            return  ((CPU_CHAR *)0);
;;;203        }
;;;204        if (psrc  == (CPU_CHAR *)0) {
00002c  13510000          CMPNE    r1,#0
;;;205            return  ((CPU_CHAR *)0);
000030  03a00000          MOVEQ    r0,#0
;;;206        }
;;;207    
;;;208    
;;;209        pstr      = pdest;
;;;210        pstr_next = pstr;
;;;211        pstr_next++;
;;;212        while (( pstr_next != (CPU_CHAR *)0) &&                     /* Copy str until NULL ptr(s) (see Note #2b) ...        */
;;;213               ( psrc      != (CPU_CHAR *)0) &&
;;;214               (*psrc      != (CPU_CHAR  )0)) {                     /* ... or NULL char found     (see Note #2c).           */
;;;215           *pstr = *psrc;
;;;216            pstr++;
;;;217            pstr_next++;
;;;218            psrc++;
;;;219        }
;;;220    
;;;221       *pstr = (CPU_CHAR)0;                                         /* Append NULL char (see Note #2b2).                    */
;;;222    
;;;223    
;;;224        return (pdest);
;;;225    }
000034  012fff1e          BXEQ     lr
000038  e1a02000          MOV      r2,r0                 ;209
00003c  e2803001          ADD      r3,r0,#1              ;211
000040  ea000002          B        |L1.80|
                  |L1.68|
000044  e2833001          ADD      r3,r3,#1              ;217
000048  e2811001          ADD      r1,r1,#1              ;218
00004c  e4c2c001          STRB     r12,[r2],#1           ;215
                  |L1.80|
000050  e3530000          CMP      r3,#0                 ;212
000054  13510000          CMPNE    r1,#0                 ;213
000058  15d1c000          LDRBNE   r12,[r1,#0]           ;214
00005c  135c0000          CMPNE    r12,#0                ;214
000060  1afffff7          BNE      |L1.68|
000064  e3a01000          MOV      r1,#0                 ;221
000068  e5c21000          STRB     r1,[r2,#0]            ;221
00006c  e12fff1e          BX       lr
;;;226    
                          ENDP

                  Str_Copy_N PROC
;;;281                                                                    /* Rtn NULL if str ptr(s) NULL      (see Note #2a).     */
;;;282        if (pdest == (CPU_CHAR *)0) {
000070  e3500000          CMP      r0,#0
;;;283            return  ((CPU_CHAR *)0);
;;;284        }
;;;285        if (psrc  == (CPU_CHAR *)0) {
000074  13510000          CMPNE    r1,#0
;;;286            return  ((CPU_CHAR *)0);
;;;287        }
;;;288    
;;;289        if (len_max == (CPU_SIZE_T)0) {                             /* Rtn NULL if copy len equals zero (see Note #2d).     */
000078  13520000          CMPNE    r2,#0
00007c  e92d4010          PUSH     {r4,lr}
;;;290            return  ((CPU_CHAR *)0);
000080  03a00000          MOVEQ    r0,#0
000084  0a00000f          BEQ      |L1.200|
;;;291        }
;;;292    
;;;293    
;;;294        pstr      = pdest;
000088  e1a03000          MOV      r3,r0
;;;295        pstr_next = pstr;
;;;296        pstr_next++;
00008c  e280e001          ADD      lr,r0,#1
;;;297        len_copy  = 0;
000090  e3a0c000          MOV      r12,#0
;;;298    
;;;299        while (( pstr_next != (CPU_CHAR *)0) &&                     /* Copy str until NULL ptr(s)  (see Note #2b)  ...      */
000094  ea000003          B        |L1.168|
                  |L1.152|
;;;300               ( psrc      != (CPU_CHAR *)0) &&
;;;301               (*psrc      != (CPU_CHAR  )0) &&                     /* ... or NULL char found      (see Note #2c); ...      */
;;;302               ( len_copy  <  (CPU_SIZE_T)len_max)) {               /* ... or max nbr chars copied (see Note #2d).          */
;;;303           *pstr = *psrc;
;;;304            pstr++;
;;;305            pstr_next++;
000098  e28ee001          ADD      lr,lr,#1
;;;306            psrc++;
00009c  e2811001          ADD      r1,r1,#1
;;;307            len_copy++;
0000a0  e28cc001          ADD      r12,r12,#1
0000a4  e4c34001          STRB     r4,[r3],#1            ;303
                  |L1.168|
0000a8  e35e0000          CMP      lr,#0                 ;299
0000ac  13510000          CMPNE    r1,#0                 ;300
0000b0  15d14000          LDRBNE   r4,[r1,#0]            ;301
0000b4  13540000          CMPNE    r4,#0                 ;301
0000b8  115c0002          CMPNE    r12,r2                ;302
0000bc  3afffff5          BCC      |L1.152|
;;;308        }
;;;309    
;;;310       *pstr = (CPU_CHAR)0;                                         /* Append NULL char (see Note #2b2).                    */
0000c0  e3a01000          MOV      r1,#0
0000c4  e5c31000          STRB     r1,[r3,#0]
                  |L1.200|
;;;311    
;;;312    
;;;313        return (pdest);
0000c8  e8bd4010          POP      {r4,lr}
;;;314    }
0000cc  e12fff1e          BX       lr
;;;315    
                          ENDP

                  Str_Cat PROC
;;;364                                                                    /* Rtn NULL if str ptr(s) NULL (see Note #2a).          */
;;;365        if (pdest == (CPU_CHAR *)0) {
0000d0  e3500000          CMP      r0,#0
;;;366            return  ((CPU_CHAR *)0);
;;;367        }
;;;368        if (pstr_cat == (CPU_CHAR *)0) {
0000d4  13510000          CMPNE    r1,#0
0000d8  0a000008          BEQ      |L1.256|
;;;369            return  ((CPU_CHAR *)0);
;;;370        }
;;;371    
;;;372    
;;;373        pstr = pdest;
0000dc  e1a02000          MOV      r2,r0
;;;374        while (( pstr != (CPU_CHAR *)0) &&                          /* Adv to end of cur dest str until NULL ptr ...        */
0000e0  ea000001          B        |L1.236|
                  |L1.228|
;;;375               (*pstr != (CPU_CHAR  )0)) {                          /* ... or NULL char found..                             */
;;;376            pstr++;
0000e4  e2922001          ADDS     r2,r2,#1
0000e8  0a000004          BEQ      |L1.256|
                  |L1.236|
0000ec  e5d23000          LDRB     r3,[r2,#0]            ;375
0000f0  e3530000          CMP      r3,#0                 ;375
0000f4  1afffffa          BNE      |L1.228|
;;;377        }
;;;378        if (pstr == (CPU_CHAR *)0) {                                /* If NULL str overrun, rtn NULL (see Note #2b).        */
;;;379            return ((CPU_CHAR *)0);
;;;380        }
;;;381    
;;;382        pstr_next = pstr;
;;;383        pstr_next++;
0000f8  e2823001          ADD      r3,r2,#1
;;;384        while (( pstr_next != (CPU_CHAR *)0) &&                     /* Cat str until NULL ptr(s) (see Note #2c) ...         */
0000fc  ea000004          B        |L1.276|
                  |L1.256|
000100  e3a00000          MOV      r0,#0                 ;379
;;;385               ( pstr_cat  != (CPU_CHAR *)0) &&
;;;386               (*pstr_cat  != (CPU_CHAR  )0)) {                     /* ... or NULL char found    (see Note #2d).            */
;;;387           *pstr = *pstr_cat;
;;;388            pstr++;
;;;389            pstr_next++;
;;;390            pstr_cat++;
;;;391        }
;;;392    
;;;393       *pstr = (CPU_CHAR)0;                                         /* Append NULL char (see Note #2c2).                    */
;;;394    
;;;395    
;;;396        return (pdest);
;;;397    }
000104  e12fff1e          BX       lr
                  |L1.264|
000108  e2833001          ADD      r3,r3,#1              ;389
00010c  e2811001          ADD      r1,r1,#1              ;390
000110  e4c2c001          STRB     r12,[r2],#1           ;387
                  |L1.276|
000114  e3530000          CMP      r3,#0                 ;384
000118  13510000          CMPNE    r1,#0                 ;385
00011c  15d1c000          LDRBNE   r12,[r1,#0]           ;386
000120  135c0000          CMPNE    r12,#0                ;386
000124  1afffff7          BNE      |L1.264|
000128  e3a01000          MOV      r1,#0                 ;393
00012c  e5c21000          STRB     r1,[r2,#0]            ;393
000130  e12fff1e          BX       lr
;;;398    
                          ENDP

                  Str_Cat_N PROC
;;;456                                                                    /* Rtn NULL if str ptr(s) NULL     (see Note #2a).      */
;;;457        if (pdest == (CPU_CHAR *)0) {
000134  e3500000          CMP      r0,#0
;;;458            return  ((CPU_CHAR *)0);
;;;459        }
;;;460        if (pstr_cat == (CPU_CHAR *)0) {
000138  13510000          CMPNE    r1,#0
00013c  e92d4010          PUSH     {r4,lr}
;;;461            return  ((CPU_CHAR *)0);
;;;462        }
;;;463    
;;;464        if (len_max == (CPU_SIZE_T)0) {                             /* Rtn NULL if cat len equals zero (see Note #2e).      */
000140  13520000          CMPNE    r2,#0
000144  0a000009          BEQ      |L1.368|
;;;465            return  ((CPU_CHAR *)0);
;;;466        }
;;;467    
;;;468    
;;;469        pstr = pdest;
000148  e1a03000          MOV      r3,r0
;;;470        while (( pstr != (CPU_CHAR *)0) &&                          /* Adv to end of cur dest str until NULL ptr ...        */
00014c  ea000001          B        |L1.344|
                  |L1.336|
;;;471               (*pstr != (CPU_CHAR  )0)) {                          /* ... or NULL char found..                             */
;;;472            pstr++;
000150  e2933001          ADDS     r3,r3,#1
000154  0a000005          BEQ      |L1.368|
                  |L1.344|
000158  e5d3c000          LDRB     r12,[r3,#0]           ;471
00015c  e35c0000          CMP      r12,#0                ;471
000160  1afffffa          BNE      |L1.336|
;;;473        }
;;;474        if (pstr == (CPU_CHAR *)0) {                                /* If NULL str overrun, rtn NULL (see Note #2b).        */
;;;475            return ((CPU_CHAR *)0);
;;;476        }
;;;477    
;;;478        pstr_next = pstr;
;;;479        pstr_next++;
000164  e283e001          ADD      lr,r3,#1
;;;480        len_cat   = 0;
000168  e3a0c000          MOV      r12,#0
;;;481    
;;;482        while (( pstr_next != (CPU_CHAR *)0) &&                     /* Cat str until NULL ptr(s)  (see Note #2c)  ...       */
00016c  ea000006          B        |L1.396|
                  |L1.368|
000170  e3a00000          MOV      r0,#0                 ;475
                  |L1.372|
000174  e8bd4010          POP      {r4,lr}               ;475
;;;483               ( pstr_cat  != (CPU_CHAR *)0) &&
;;;484               (*pstr_cat  != (CPU_CHAR  )0) &&                     /* ... or NULL char found     (see Note #2d); ...       */
;;;485               ( len_cat   <  (CPU_SIZE_T)len_max)) {               /* ... or max nbr chars cat'd (see Note #2d).           */
;;;486           *pstr = *pstr_cat;
;;;487            pstr++;

⌨️ 快捷键说明

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