📄 lib_mem.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -olib_mem.o --depend=lib_mem.d --device=DARMP --apcs=interwork -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\ARM\Generic\RVMDK -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\ARM\RVMDK -I..\..\..\..\..\uC-LIB -I..\..\..\..\..\uCOSView\Source -I..\..\..\..\..\uCOSView\Ports\ARM7\LPC2468\IAR -Id:\Keil\ARM\INC\Philips ..\..\..\..\..\uC-LIB\lib_mem.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
Mem_Set PROC
;;;177 CPU_SIZE_T size)
;;;178 {
000000 e92d40f0 PUSH {r4-r7,lr}
;;;179 CPU_SIZE_T size_rem;
;;;180 CPU_ALIGN data_align;
;;;181 CPU_ALIGN *pmem_align;
;;;182 CPU_INT08U *pmem_08;
;;;183 CPU_INT08U mem_align_modulo;
;;;184 CPU_INT08U i;
;;;185
;;;186
;;;187 if (size < 1) { /* See Note #1. */
000004 e3520000 CMP r2,#0
000008 1a000001 BNE |L1.20|
|L1.12|
;;;188 return;
;;;189 }
;;;190 if (pmem == (void *)0) {
;;;191 return;
;;;192 }
;;;193
;;;194
;;;195 data_align = 0;
;;;196 for (i = 0; i < sizeof(CPU_ALIGN); i++) { /* Fill each data_align octet with data val. */
;;;197 data_align <<= DEF_OCTET_NBR_BITS;
;;;198 data_align |= (CPU_ALIGN)data_val;
;;;199 }
;;;200
;;;201 size_rem = (CPU_SIZE_T)size;
;;;202 mem_align_modulo = (CPU_INT08U)((CPU_ADDR)pmem % sizeof(CPU_ALIGN)); /* See Note #3. */
;;;203
;;;204 pmem_08 = (CPU_INT08U *)pmem;
;;;205 if (mem_align_modulo != 0) { /* If leading octets avail, ... */
;;;206 i = mem_align_modulo;
;;;207 while ((size_rem > 0) && /* ... start mem buf fill with leading octets ... */
;;;208 (i < sizeof(CPU_ALIGN ))) { /* ... until next CPU_ALIGN word boundary. */
;;;209 *pmem_08++ = data_val;
;;;210 size_rem -= sizeof(CPU_INT08U);
;;;211 i++;
;;;212 }
;;;213 }
;;;214
;;;215 pmem_align = (CPU_ALIGN *)pmem_08; /* See Note #2a. */
;;;216 while (size_rem >= sizeof(CPU_ALIGN)) { /* While mem buf aligned on CPU_ALIGN word boundaries, */
;;;217 *pmem_align++ = data_align; /* ... fill mem buf with CPU_ALIGN-sized data. */
;;;218 size_rem -= sizeof(CPU_ALIGN);
;;;219 }
;;;220
;;;221 pmem_08 = (CPU_INT08U *)pmem_align;
;;;222 while (size_rem > 0) { /* Finish mem buf fill with trailing octets. */
;;;223 *pmem_08++ = data_val;
;;;224 size_rem -= sizeof(CPU_INT08U);
;;;225 }
;;;226 }
00000c e8bd40f0 POP {r4-r7,lr}
000010 e12fff1e BX lr
|L1.20|
000014 e3500000 CMP r0,#0
000018 1a000000 BNE |L1.32|
00001c eafffffa B |L1.12|
|L1.32|
000020 e3a0c000 MOV r12,#0
000024 e3a06000 MOV r6,#0
000028 ea000003 B |L1.60|
|L1.44|
00002c e1a0c40c LSL r12,r12,#8
000030 e18cc001 ORR r12,r12,r1
000034 e2867001 ADD r7,r6,#1
000038 e20760ff AND r6,r7,#0xff
|L1.60|
00003c e3560004 CMP r6,#4
000040 3afffff9 BCC |L1.44|
000044 e1a03002 MOV r3,r2
000048 e200e003 AND lr,r0,#3
00004c e1a05000 MOV r5,r0
000050 e35e0000 CMP lr,#0
000054 0a000009 BEQ |L1.128|
000058 e1a0600e MOV r6,lr
00005c ea000003 B |L1.112|
|L1.96|
000060 e4c51001 STRB r1,[r5],#1
000064 e2433001 SUB r3,r3,#1
000068 e2867001 ADD r7,r6,#1
00006c e20760ff AND r6,r7,#0xff
|L1.112|
000070 e3530000 CMP r3,#0
000074 0a000001 BEQ |L1.128|
000078 e3560004 CMP r6,#4
00007c 3afffff7 BCC |L1.96|
|L1.128|
000080 e1a04005 MOV r4,r5
000084 ea000001 B |L1.144|
|L1.136|
000088 e484c004 STR r12,[r4],#4
00008c e2433004 SUB r3,r3,#4
|L1.144|
000090 e3530004 CMP r3,#4
000094 2afffffb BCS |L1.136|
000098 e1a05004 MOV r5,r4
00009c ea000001 B |L1.168|
|L1.160|
0000a0 e4c51001 STRB r1,[r5],#1
0000a4 e2433001 SUB r3,r3,#1
|L1.168|
0000a8 e3530000 CMP r3,#0
0000ac 1afffffb BNE |L1.160|
0000b0 eaffffd5 B |L1.12|
ENDP
Mem_Clr PROC
;;;134 CPU_SIZE_T size)
;;;135 {
0000b4 e92d4030 PUSH {r4,r5,lr}
0000b8 e1a04000 MOV r4,r0
0000bc e1a05001 MOV r5,r1
;;;136 Mem_Set((void *)pmem,
0000c0 e1a02005 MOV r2,r5
0000c4 e3a01000 MOV r1,#0
0000c8 e1a00004 MOV r0,r4
0000cc ebfffffe BL Mem_Set
;;;137 (CPU_INT08U)0, /* See Note #2. */
;;;138 (CPU_SIZE_T)size);
;;;139 }
0000d0 e8bd4030 POP {r4,r5,lr}
0000d4 e12fff1e BX lr
ENDP
Mem_Copy PROC
;;;269 CPU_SIZE_T size)
;;;270 {
0000d8 e92d47f0 PUSH {r4-r10,lr}
;;;271 CPU_SIZE_T size_rem;
;;;272 CPU_ALIGN *pmem_align_dest;
;;;273 CPU_ALIGN *pmem_align_src;
;;;274 CPU_INT08U *pmem_08_dest;
;;;275 CPU_INT08U *pmem_08_src;
;;;276 CPU_INT08U i;
;;;277 CPU_INT08U mem_align_modulo_dest;
;;;278 CPU_INT08U mem_align_modulo_src;
;;;279 CPU_BOOLEAN mem_aligned;
;;;280
;;;281
;;;282 if (size < 1) { /* See Note #1. */
0000dc e3520000 CMP r2,#0
0000e0 1a000001 BNE |L1.236|
|L1.228|
;;;283 return;
;;;284 }
;;;285 if (pdest == (void *)0) {
;;;286 return;
;;;287 }
;;;288 if (psrc == (void *)0) {
;;;289 return;
;;;290 }
;;;291
;;;292
;;;293 size_rem = (CPU_SIZE_T )size;
;;;294
;;;295 pmem_08_dest = (CPU_INT08U *)pdest;
;;;296 pmem_08_src = (CPU_INT08U *)psrc;
;;;297 /* See Note #4. */
;;;298 mem_align_modulo_dest = (CPU_INT08U )((CPU_ADDR)pmem_08_dest % sizeof(CPU_ALIGN));
;;;299 mem_align_modulo_src = (CPU_INT08U )((CPU_ADDR)pmem_08_src % sizeof(CPU_ALIGN));
;;;300
;;;301 mem_aligned = (mem_align_modulo_dest == mem_align_modulo_src) ? DEF_YES : DEF_NO;
;;;302
;;;303 if (mem_aligned == DEF_YES) { /* If mem bufs' alignment offset equal, ... */
;;;304 /* ... optimize copy for mem buf alignment. */
;;;305 if (mem_align_modulo_dest != 0) { /* If leading octets avail, ... */
;;;306 i = mem_align_modulo_dest;
;;;307 while ((size_rem > 0) && /* ... start mem buf copy with leading octets ... */
;;;308 (i < sizeof(CPU_ALIGN ))) { /* ... until next CPU_ALIGN word boundary. */
;;;309 *pmem_08_dest++ = *pmem_08_src++;
;;;310 size_rem -= sizeof(CPU_INT08U);
;;;311 i++;
;;;312 }
;;;313 }
;;;314
;;;315 pmem_align_dest = (CPU_ALIGN *)pmem_08_dest; /* See Note #3a. */
;;;316 pmem_align_src = (CPU_ALIGN *)pmem_08_src;
;;;317 while (size_rem >= sizeof(CPU_ALIGN)) { /* While mem bufs aligned on CPU_ALIGN word boundaries, */
;;;318 *pmem_align_dest++ = *pmem_align_src++; /* ... copy psrc to pdest with CPU_ALIGN-sized words. */
;;;319 size_rem -= sizeof(CPU_ALIGN);
;;;320 }
;;;321
;;;322 pmem_08_dest = (CPU_INT08U *)pmem_align_dest;
;;;323 pmem_08_src = (CPU_INT08U *)pmem_align_src;
;;;324 }
;;;325
;;;326 while (size_rem > 0) { /* For unaligned mem bufs or trailing octets, ... */
;;;327 *pmem_08_dest++ = *pmem_08_src++; /* ... copy psrc to pdest by octets. */
;;;328 size_rem -= sizeof(CPU_INT08U);
;;;329 }
;;;330 }
0000e4 e8bd47f0 POP {r4-r10,lr}
0000e8 e12fff1e BX lr
|L1.236|
0000ec e3500000 CMP r0,#0
0000f0 1a000000 BNE |L1.248|
0000f4 eafffffa B |L1.228|
|L1.248|
0000f8 e3510000 CMP r1,#0
0000fc 1a000000 BNE |L1.260|
000100 eafffff7 B |L1.228|
|L1.260|
000104 e1a03002 MOV r3,r2
000108 e1a05000 MOV r5,r0
00010c e1a06001 MOV r6,r1
000110 e1a00005 MOV r0,r5
000114 e205e003 AND lr,r5,#3
000118 e1a01006 MOV r1,r6
00011c e2068003 AND r8,r6,#3
000120 e15e0008 CMP lr,r8
000124 1a000001 BNE |L1.304|
000128 e3a0a001 MOV r10,#1
00012c ea000000 B |L1.308|
|L1.304|
000130 e3a0a000 MOV r10,#0
|L1.308|
000134 e20a90ff AND r9,r10,#0xff
000138 e3590001 CMP r9,#1
00013c 1a000016 BNE |L1.412|
000140 e35e0000 CMP lr,#0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -