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

📄 lib_mem.txt

📁 ucos2 is a file system for embedded applications which can be used on any media, for which you can p
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 919] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\lib_mem.o --depend=.\rvmdk\lib_mem.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_mem.crf ..\..\..\..\..\uC-LIB\lib_mem.c]
                          ARM

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

                  Mem_Set PROC
;;;187    
;;;188        if (size < 1) {                                             /* See Note #1.                                         */
000000  e3520000          CMP      r2,#0
;;;189            return;
;;;190        }
;;;191        if (pmem == (void *)0) {
000004  13500000          CMPNE    r0,#0
;;;192            return;
;;;193        }
;;;194    
;;;195    
;;;196        data_align = 0;
;;;197        for (i = 0; i < sizeof(CPU_ALIGN); i++) {                   /* Fill each data_align octet with data val.            */
;;;198            data_align <<=  DEF_OCTET_NBR_BITS;
;;;199            data_align  |= (CPU_ALIGN)data_val;
;;;200        }
;;;201    
;;;202        size_rem         = (CPU_SIZE_T)size;
;;;203        mem_align_modulo = (CPU_INT08U)((CPU_ADDR)pmem % sizeof(CPU_ALIGN));    /* See Note #3.                             */
;;;204    
;;;205        pmem_08 = (CPU_INT08U *)pmem;
;;;206        if (mem_align_modulo != 0) {                                /* If leading octets avail,                   ...       */
;;;207            i = mem_align_modulo;
;;;208            while ((size_rem > 0) &&                                /* ... start mem buf fill with leading octets ...       */
;;;209                   (i        < sizeof(CPU_ALIGN ))) {               /* ... until next CPU_ALIGN word boundary.              */
;;;210               *pmem_08++ = data_val;
;;;211                size_rem -= sizeof(CPU_INT08U);
;;;212                i++;
;;;213            }
;;;214        }
;;;215    
;;;216        pmem_align = (CPU_ALIGN *)pmem_08;                          /* See Note #2a.                                        */
;;;217        while (size_rem >= sizeof(CPU_ALIGN)) {                     /* While mem buf aligned on CPU_ALIGN word boundaries,  */
;;;218           *pmem_align++ = data_align;                              /* ... fill mem buf with    CPU_ALIGN-sized data.       */
;;;219            size_rem    -= sizeof(CPU_ALIGN);
;;;220        }
;;;221    
;;;222        pmem_08 = (CPU_INT08U *)pmem_align;
;;;223        while (size_rem > 0) {                                      /* Finish mem buf fill with trailing octets.            */
;;;224           *pmem_08++   = data_val;
;;;225            size_rem   -= sizeof(CPU_INT08U);
;;;226        }
;;;227    }
000008  012fff1e          BXEQ     lr
00000c  e3a03000          MOV      r3,#0                 ;196
000010  e1a0c003          MOV      r12,r3                ;197
                  |L1.20|
000014  e28cc001          ADD      r12,r12,#1            ;197
000018  e20cc0ff          AND      r12,r12,#0xff         ;197
00001c  e35c0004          CMP      r12,#4                ;197
000020  e1813403          ORR      r3,r1,r3,LSL #8       ;199
000024  3afffffa          BCC      |L1.20|
000028  e210c003          ANDS     r12,r0,#3             ;203
00002c  0a00000a          BEQ      |L1.92|
000030  ea000003          B        |L1.68|
                  |L1.52|
000034  e28cc001          ADD      r12,r12,#1            ;212
000038  e2422001          SUB      r2,r2,#1              ;211
00003c  e20cc0ff          AND      r12,r12,#0xff         ;212
000040  e4c01001          STRB     r1,[r0],#1            ;210
                  |L1.68|
000044  e3520000          CMP      r2,#0                 ;208
000048  135c0004          CMPNE    r12,#4                ;209
00004c  3afffff8          BCC      |L1.52|
000050  ea000001          B        |L1.92|
                  |L1.84|
000054  e2422004          SUB      r2,r2,#4              ;219
000058  e4803004          STR      r3,[r0],#4            ;219
                  |L1.92|
00005c  e3520004          CMP      r2,#4                 ;217
000060  2afffffb          BCS      |L1.84|
000064  ea000001          B        |L1.112|
                  |L1.104|
000068  e2422001          SUB      r2,r2,#1              ;225
00006c  e4c01001          STRB     r1,[r0],#1            ;224
                  |L1.112|
000070  e3520000          CMP      r2,#0                 ;223
000074  1afffffb          BNE      |L1.104|
000078  e12fff1e          BX       lr
;;;228    
                          ENDP

                  Mem_Clr PROC
;;;136    {
;;;137        Mem_Set((void     *)pmem,
00007c  e1a02001          MOV      r2,r1
000080  e3a01000          MOV      r1,#0
000084  eafffffe          B        Mem_Set
;;;138                (CPU_INT08U)0,                                      /* See Note #2.                                         */
;;;139                (CPU_SIZE_T)size);
;;;140    }
;;;141    
                          ENDP

                  Mem_Copy PROC
;;;282    
;;;283        if (size < 1) {                                             /* See Note #1.                                         */
000088  e3520000          CMP      r2,#0
;;;284            return;
;;;285        }
;;;286        if (pdest == (void *)0) {
00008c  13500000          CMPNE    r0,#0
;;;287            return;
;;;288        }
;;;289        if (psrc  == (void *)0) {
000090  13510000          CMPNE    r1,#0
;;;290            return;
;;;291        }
;;;292    
;;;293    
;;;294        size_rem              = (CPU_SIZE_T  )size;
;;;295    
;;;296        pmem_08_dest          = (CPU_INT08U *)pdest;
;;;297        pmem_08_src           = (CPU_INT08U *)psrc;
;;;298                                                                    /* See Note #4.                                         */
;;;299        mem_align_modulo_dest = (CPU_INT08U  )((CPU_ADDR)pmem_08_dest % sizeof(CPU_ALIGN));
;;;300        mem_align_modulo_src  = (CPU_INT08U  )((CPU_ADDR)pmem_08_src  % sizeof(CPU_ALIGN));
;;;301    
;;;302        mem_aligned           = (mem_align_modulo_dest == mem_align_modulo_src) ? DEF_YES : DEF_NO;
;;;303    
;;;304        if (mem_aligned == DEF_YES) {                               /* If mem bufs' alignment offset equal, ...             */
;;;305                                                                    /* ... optimize copy for mem buf alignment.             */
;;;306            if (mem_align_modulo_dest != 0) {                       /* If leading octets avail,                   ...       */
;;;307                i = mem_align_modulo_dest;
;;;308                while ((size_rem   >  0) &&                         /* ... start mem buf copy with leading octets ...       */
;;;309                       (i          <  sizeof(CPU_ALIGN ))) {        /* ... until next CPU_ALIGN word boundary.              */
;;;310                   *pmem_08_dest++ = *pmem_08_src++;
;;;311                    size_rem      -=  sizeof(CPU_INT08U);
;;;312                    i++;
;;;313                }
;;;314            }
;;;315    
;;;316            pmem_align_dest = (CPU_ALIGN *)pmem_08_dest;            /* See Note #3a.                                        */
;;;317            pmem_align_src  = (CPU_ALIGN *)pmem_08_src;
;;;318            while (size_rem      >=  sizeof(CPU_ALIGN)) {           /* While mem bufs aligned on CPU_ALIGN word boundaries, */
;;;319               *pmem_align_dest++ = *pmem_align_src++;              /* ... copy psrc to pdest with CPU_ALIGN-sized words.   */
;;;320                size_rem         -=  sizeof(CPU_ALIGN);
;;;321            }
;;;322    
;;;323            pmem_08_dest = (CPU_INT08U *)pmem_align_dest;
;;;324            pmem_08_src  = (CPU_INT08U *)pmem_align_src;
;;;325        }
;;;326    
;;;327        while (size_rem > 0) {                                      /* For unaligned mem bufs or trailing octets, ...       */
;;;328           *pmem_08_dest++ = *pmem_08_src++;                        /* ... copy psrc to pdest by octets.                    */
;;;329            size_rem      -=  sizeof(CPU_INT08U);
;;;330        }
;;;331    }
000094  012fff1e          BXEQ     lr
000098  e2003003          AND      r3,r0,#3              ;299
00009c  e201c003          AND      r12,r1,#3             ;300
0000a0  e153000c          CMP      r3,r12                ;302
0000a4  13a0c000          MOVNE    r12,#0                ;302
0000a8  03a0c001          MOVEQ    r12,#1                ;302
0000ac  e35c0001          CMP      r12,#1                ;304
0000b0  1a000011          BNE      |L1.252|
0000b4  e3530000          CMP      r3,#0                 ;306
0000b8  0a00000c          BEQ      |L1.240|
0000bc  ea000005          B        |L1.216|

⌨️ 快捷键说明

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