?? lib_mem.txt
字號:
; 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 + -