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

📄 lib_mem.txt

📁 ucos2.86版本结合STM板极支持包
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 914] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\lib_mem.o --depend=.\rvmdk\lib_mem.d --device=DARMSTM -O1 -Otime -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\arm-cortex-m3\Generic\RealView -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\CPU\ST\STM32\inc -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\Arm-Cortex-M3\RealView -I..\..\..\..\..\uC-LIB -I..\..\..\..\..\uC-Probe\Target\Plugins\uCOS-II -I..\..\..\..\..\uC-Probe\Target\Communication\Generic\Source -I..\..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Ports\ST\STM32 -I..\..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Source -ID:\Keil\ARM\INC\ST\STM32F10x ..\..\..\..\..\uC-LIB\lib_mem.c]
                          THUMB

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

                  Mem_Set PROC
;;;187    
;;;188        if (size < 1) {                                             /* See Note #1.                                         */
000000  2a00              CMP      r2,#0
000002  d02b              BEQ      |L1.92|
;;;189            return;
;;;190        }
;;;191        if (pmem == (void *)0) {
000004  2800              CMP      r0,#0
000006  d029              BEQ      |L1.92|
;;;192            return;
;;;193        }
;;;194    
;;;195    
;;;196        data_align = 0;
000008  2300              MOVS     r3,#0
;;;197        for (i = 0; i < sizeof(CPU_ALIGN); i++) {                   /* Fill each data_align octet with data val.            */
00000a  469c              MOV      r12,r3
                  |L1.12|
;;;198            data_align <<=  DEF_OCTET_NBR_BITS;
00000c  021b              LSLS     r3,r3,#8
;;;199            data_align  |= (CPU_ALIGN)data_val;
00000e  430b              ORRS     r3,r3,r1
000010  f10cf10c          ADD      r12,r12,#1
000014  f00cf00c          AND      r12,r12,#0xff
000018  f1bcf1bc          CMP      r12,#4
00001c  d3f6              BCC      |L1.12|
;;;200        }
;;;201    
;;;202        size_rem         = (CPU_SIZE_T)size;
;;;203        mem_align_modulo = (CPU_INT08U)((CPU_ADDR)pmem % sizeof(CPU_ALIGN));    /* See Note #3.                             */
00001e  f000f000          AND      r12,r0,#3
;;;204    
;;;205        pmem_08 = (CPU_INT08U *)pmem;
;;;206        if (mem_align_modulo != 0) {                                /* If leading octets avail,                   ...       */
000022  f1bcf1bc          CMP      r12,#0
000026  d00b              BEQ      |L1.64|
000028  e006              B        |L1.56|
                  |L1.42|
;;;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;
00002a  f800f800          STRB     r1,[r0],#1
;;;211                size_rem -= sizeof(CPU_INT08U);
00002e  1e52              SUBS     r2,r2,#1
000030  f10cf10c          ADD      r12,r12,#1
000034  f00cf00c          AND      r12,r12,#0xff
                  |L1.56|
000038  b112              CBZ      r2,|L1.64|
00003a  f1bcf1bc          CMP      r12,#4
00003e  d3f4              BCC      |L1.42|
                  |L1.64|
;;;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,  */
000040  2a04              CMP      r2,#4
000042  d304              BCC      |L1.78|
                  |L1.68|
;;;218           *pmem_align++ = data_align;                              /* ... fill mem buf with    CPU_ALIGN-sized data.       */
000044  f840f840          STR      r3,[r0],#4
;;;219            size_rem    -= sizeof(CPU_ALIGN);
000048  1f12              SUBS     r2,r2,#4
00004a  2a04              CMP      r2,#4
00004c  d2fa              BCS      |L1.68|
                  |L1.78|
;;;220        }
;;;221    
;;;222        pmem_08 = (CPU_INT08U *)pmem_align;
;;;223        while (size_rem > 0) {                                      /* Finish mem buf fill with trailing octets.            */
00004e  2a00              CMP      r2,#0
000050  d004              BEQ      |L1.92|
                  |L1.82|
;;;224           *pmem_08++   = data_val;
000052  f800f800          STRB     r1,[r0],#1
;;;225            size_rem   -= sizeof(CPU_INT08U);
000056  1e52              SUBS     r2,r2,#1
000058  2a00              CMP      r2,#0
00005a  d1fa              BNE      |L1.82|
                  |L1.92|
;;;226        }
;;;227    }
00005c  4770              BX       lr
;;;228    
                          ENDP

                  Mem_Clr PROC
;;;136    {
;;;137        Mem_Set((void     *)pmem,
00005e  460a              MOV      r2,r1
000060  2100              MOVS     r1,#0
000062  e7fe              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.                                         */
000064  2a00              CMP      r2,#0
000066  d02f              BEQ      |L1.200|
;;;284            return;
;;;285        }
;;;286        if (pdest == (void *)0) {
000068  2800              CMP      r0,#0
00006a  d02d              BEQ      |L1.200|
;;;287            return;
;;;288        }
;;;289        if (psrc  == (void *)0) {
00006c  2900              CMP      r1,#0
00006e  d02b              BEQ      |L1.200|
;;;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));
000070  f000f000          AND      r3,r0,#3
;;;300        mem_align_modulo_src  = (CPU_INT08U  )((CPU_ADDR)pmem_08_src  % sizeof(CPU_ALIGN));
000074  f001f001          AND      r12,r1,#3
;;;301    
;;;302        mem_aligned           = (mem_align_modulo_dest == mem_align_modulo_src) ? DEF_YES : DEF_NO;
000078  4563              CMP      r3,r12
00007a  d102              BNE      |L1.130|
00007c  f04ff04f          MOV      r12,#1
000080  e001              B        |L1.134|
                  |L1.130|
000082  f04ff04f          MOV      r12,#0
                  |L1.134|
;;;303    
;;;304        if (mem_aligned == DEF_YES) {                               /* If mem bufs' alignment offset equal, ...             */
000086  f1bcf1bc          CMP      r12,#1
00008a  d114              BNE      |L1.182|
;;;305                                                                    /* ... optimize copy for mem buf alignment.             */
;;;306            if (mem_align_modulo_dest != 0) {                       /* If leading octets avail,                   ...       */
00008c  b153              CBZ      r3,|L1.164|
00008e  e006              B        |L1.158|
                  |L1.144|
;;;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++;
000090  f811f811          LDRB     r12,[r1],#1
000094  f800f800          STRB     r12,[r0],#1
;;;311                    size_rem      -=  sizeof(CPU_INT08U);
000098  1e52              SUBS     r2,r2,#1
00009a  1c5b              ADDS     r3,r3,#1
;;;312                    i++;
00009c  b2db              UXTB     r3,r3
                  |L1.158|
00009e  b10a              CBZ      r2,|L1.164|
0000a0  2b04              CMP      r3,#4
0000a2  d3f5              BCC      |L1.144|
                  |L1.164|
;;;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, */
0000a4  2a04              CMP      r2,#4
0000a6  d306              BCC      |L1.182|
                  |L1.168|
;;;319               *pmem_align_dest++ = *pmem_align_src++;              /* ... copy psrc to pdest with CPU_ALIGN-sized words.   */
0000a8  f851f851          LDR      r3,[r1],#4
0000ac  f840f840          STR      r3,[r0],#4
;;;320                size_rem         -=  sizeof(CPU_ALIGN);
0000b0  1f12              SUBS     r2,r2,#4
0000b2  2a04              CMP      r2,#4
0000b4  d2f8              BCS      |L1.168|
                  |L1.182|
;;;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, ...       */
0000b6  2a00              CMP      r2,#0

⌨️ 快捷键说明

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