📄 lib_mem.txt
字号:
; 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 + -