📄 lib_str.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -olib_str.o --depend=lib_str.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_str.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
Str_Len PROC
;;;139 CPU_SIZE_T Str_Len (CPU_CHAR *pstr)
;;;140 {
000000 e1a01000 MOV r1,r0
;;;141 CPU_SIZE_T len;
;;;142
;;;143
;;;144 len = 0;
000004 e3a00000 MOV r0,#0
;;;145 while (( pstr != (CPU_CHAR *)0) && /* Calc str len until NULL ptr (see Note #2a) ... */
000008 ea000001 B |L1.20|
|L1.12|
;;;146 (*pstr != (CPU_CHAR )0)) { /* ... or NULL char found (see Note #2b). */
;;;147 len++;
00000c e2800001 ADD r0,r0,#1
;;;148 pstr++;
000010 e2811001 ADD r1,r1,#1
|L1.20|
000014 e3510000 CMP r1,#0
000018 0a000002 BEQ |L1.40|
00001c e5d12000 LDRB r2,[r1,#0]
000020 e3520000 CMP r2,#0
000024 1afffff8 BNE |L1.12|
|L1.40|
;;;149 }
;;;150
;;;151 return (len);
;;;152 }
000028 e12fff1e BX lr
ENDP
Str_Copy PROC
;;;194 CPU_CHAR *psrc)
;;;195 {
00002c e1a02000 MOV r2,r0
;;;196 CPU_CHAR *pstr;
;;;197 CPU_CHAR *pstr_next;
;;;198
;;;199 /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
;;;200 if (pdest == (CPU_CHAR *)0) {
000030 e3520000 CMP r2,#0
000034 1a000001 BNE |L1.64|
;;;201 return ((CPU_CHAR *)0);
000038 e3a00000 MOV r0,#0
|L1.60|
;;;202 }
;;;203 if (psrc == (CPU_CHAR *)0) {
;;;204 return ((CPU_CHAR *)0);
;;;205 }
;;;206
;;;207
;;;208 pstr = pdest;
;;;209 pstr_next = pstr;
;;;210 pstr_next++;
;;;211 while (( pstr_next != (CPU_CHAR *)0) && /* Copy str until NULL ptr(s) (see Note #2b) ... */
;;;212 ( psrc != (CPU_CHAR *)0) &&
;;;213 (*psrc != (CPU_CHAR )0)) { /* ... or NULL char found (see Note #2c). */
;;;214 *pstr = *psrc;
;;;215 pstr++;
;;;216 pstr_next++;
;;;217 psrc++;
;;;218 }
;;;219
;;;220 *pstr = (CPU_CHAR)0; /* Append NULL char (see Note #2b2). */
;;;221
;;;222
;;;223 return (pdest);
;;;224 }
00003c e12fff1e BX lr
|L1.64|
000040 e3510000 CMP r1,#0
000044 1a000001 BNE |L1.80|
000048 e3a00000 MOV r0,#0
00004c eafffffa B |L1.60|
|L1.80|
000050 e1a03002 MOV r3,r2
000054 e1a02003 MOV r2,r3
000058 e1a0c003 MOV r12,r3
00005c e1a0200c MOV r2,r12
000060 e28cc001 ADD r12,r12,#1
000064 ea000004 B |L1.124|
|L1.104|
000068 e5d10000 LDRB r0,[r1,#0]
00006c e5c30000 STRB r0,[r3,#0]
000070 e2833001 ADD r3,r3,#1
000074 e28cc001 ADD r12,r12,#1
000078 e2811001 ADD r1,r1,#1
|L1.124|
00007c e35c0000 CMP r12,#0
000080 0a000004 BEQ |L1.152|
000084 e3510000 CMP r1,#0
000088 0a000002 BEQ |L1.152|
00008c e5d10000 LDRB r0,[r1,#0]
000090 e3500000 CMP r0,#0
000094 1afffff3 BNE |L1.104|
|L1.152|
000098 e3a00000 MOV r0,#0
00009c e5c30000 STRB r0,[r3,#0]
0000a0 e1a00002 MOV r0,r2
0000a4 eaffffe4 B |L1.60|
ENDP
Str_Copy_N PROC
;;;274 CPU_SIZE_T len_max)
;;;275 {
0000a8 e92d4010 PUSH {r4,lr}
0000ac e1a03000 MOV r3,r0
;;;276 CPU_CHAR *pstr;
;;;277 CPU_CHAR *pstr_next;
;;;278 CPU_SIZE_T len_copy;
;;;279
;;;280 /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
;;;281 if (pdest == (CPU_CHAR *)0) {
0000b0 e3530000 CMP r3,#0
0000b4 1a000002 BNE |L1.196|
;;;282 return ((CPU_CHAR *)0);
0000b8 e3a00000 MOV r0,#0
|L1.188|
0000bc e8bd4010 POP {r4,lr}
;;;283 }
;;;284 if (psrc == (CPU_CHAR *)0) {
;;;285 return ((CPU_CHAR *)0);
;;;286 }
;;;287
;;;288 if (len_max == (CPU_SIZE_T)0) { /* Rtn NULL if copy len equals zero (see Note #2d). */
;;;289 return ((CPU_CHAR *)0);
;;;290 }
;;;291
;;;292
;;;293 pstr = pdest;
;;;294 pstr_next = pstr;
;;;295 pstr_next++;
;;;296 len_copy = 0;
;;;297
;;;298 while (( pstr_next != (CPU_CHAR *)0) && /* Copy str until NULL ptr(s) (see Note #2b) ... */
;;;299 ( psrc != (CPU_CHAR *)0) &&
;;;300 (*psrc != (CPU_CHAR )0) && /* ... or NULL char found (see Note #2c); ... */
;;;301 ( len_copy < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars copied (see Note #2d). */
;;;302 *pstr = *psrc;
;;;303 pstr++;
;;;304 pstr_next++;
;;;305 psrc++;
;;;306 len_copy++;
;;;307 }
;;;308
;;;309 *pstr = (CPU_CHAR)0; /* Append NULL char (see Note #2b2). */
;;;310
;;;311
;;;312 return (pdest);
;;;313 }
0000c0 e12fff1e BX lr
|L1.196|
0000c4 e3510000 CMP r1,#0
0000c8 1a000001 BNE |L1.212|
0000cc e3a00000 MOV r0,#0
0000d0 eafffff9 B |L1.188|
|L1.212|
0000d4 e3520000 CMP r2,#0
0000d8 1a000001 BNE |L1.228|
0000dc e3a00000 MOV r0,#0
0000e0 eafffff5 B |L1.188|
|L1.228|
0000e4 e1a0c003 MOV r12,r3
0000e8 e1a0300c MOV r3,r12
0000ec e1a0e00c MOV lr,r12
0000f0 e1a0300e MOV r3,lr
0000f4 e28ee001 ADD lr,lr,#1
0000f8 e3a04000 MOV r4,#0
0000fc ea000005 B |L1.280|
|L1.256|
000100 e5d10000 LDRB r0,[r1,#0]
000104 e5cc0000 STRB r0,[r12,#0]
000108 e28cc001 ADD r12,r12,#1
00010c e28ee001 ADD lr,lr,#1
000110 e2811001 ADD r1,r1,#1
000114 e2844001 ADD r4,r4,#1
|L1.280|
000118 e35e0000 CMP lr,#0
00011c 0a000006 BEQ |L1.316|
000120 e3510000 CMP r1,#0
000124 0a000004 BEQ |L1.316|
000128 e5d10000 LDRB r0,[r1,#0]
00012c e3500000 CMP r0,#0
000130 0a000001 BEQ |L1.316|
000134 e1540002 CMP r4,r2
000138 3afffff0 BCC |L1.256|
|L1.316|
00013c e3a00000 MOV r0,#0
000140 e5cc0000 STRB r0,[r12,#0]
000144 e1a00003 MOV r0,r3
000148 eaffffdb B |L1.188|
ENDP
Str_Cat PROC
;;;358 CPU_CHAR *pstr_cat)
;;;359 {
00014c e1a02000 MOV r2,r0
;;;360 CPU_CHAR *pstr;
;;;361 CPU_CHAR *pstr_next;
;;;362
;;;363 /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
;;;364 if (pdest == (CPU_CHAR *)0) {
000150 e3520000 CMP r2,#0
000154 1a000001 BNE |L1.352|
;;;365 return ((CPU_CHAR *)0);
000158 e3a00000 MOV r0,#0
|L1.348|
;;;366 }
;;;367 if (pstr_cat == (CPU_CHAR *)0) {
;;;368 return ((CPU_CHAR *)0);
;;;369 }
;;;370
;;;371
;;;372 pstr = pdest;
;;;373 while (( pstr != (CPU_CHAR *)0) && /* Adv to end of cur dest str until NULL ptr ... */
;;;374 (*pstr != (CPU_CHAR )0)) { /* ... or NULL char found.. */
;;;375 pstr++;
;;;376 }
;;;377 if (pstr == (CPU_CHAR *)0) { /* If NULL str overrun, rtn NULL (see Note #2b). */
;;;378 return ((CPU_CHAR *)0);
;;;379 }
;;;380
;;;381 pstr_next = pstr;
;;;382 pstr_next++;
;;;383 while (( pstr_next != (CPU_CHAR *)0) && /* Cat str until NULL ptr(s) (see Note #2c) ... */
;;;384 ( pstr_cat != (CPU_CHAR *)0) &&
;;;385 (*pstr_cat != (CPU_CHAR )0)) { /* ... or NULL char found (see Note #2d). */
;;;386 *pstr = *pstr_cat;
;;;387 pstr++;
;;;388 pstr_next++;
;;;389 pstr_cat++;
;;;390 }
;;;391
;;;392 *pstr = (CPU_CHAR)0; /* Append NULL char (see Note #2c2). */
;;;393
;;;394
;;;395 return (pdest);
;;;396 }
00015c e12fff1e BX lr
|L1.352|
000160 e3510000 CMP r1,#0
000164 1a000001 BNE |L1.368|
000168 e3a00000 MOV r0,#0
00016c eafffffa B |L1.348|
|L1.368|
000170 e1a03002 MOV r3,r2
000174 ea000000 B |L1.380|
|L1.376|
000178 e2833001 ADD r3,r3,#1
|L1.380|
00017c e3530000 CMP r3,#0
000180 0a000002 BEQ |L1.400|
000184 e5d30000 LDRB r0,[r3,#0]
000188 e3500000 CMP r0,#0
00018c 1afffff9 BNE |L1.376|
|L1.400|
000190 e3530000 CMP r3,#0
000194 1a000001 BNE |L1.416|
000198 e3a00000 MOV r0,#0
00019c eaffffee B |L1.348|
|L1.416|
0001a0 e1a0c003 MOV r12,r3
0001a4 e1a0300c MOV r3,r12
0001a8 e28cc001 ADD r12,r12,#1
0001ac ea000004 B |L1.452|
|L1.432|
0001b0 e5d10000 LDRB r0,[r1,#0]
0001b4 e5c30000 STRB r0,[r3,#0]
0001b8 e2833001 ADD r3,r3,#1
0001bc e28cc001 ADD r12,r12,#1
0001c0 e2811001 ADD r1,r1,#1
|L1.452|
0001c4 e35c0000 CMP r12,#0
0001c8 0a000004 BEQ |L1.480|
0001cc e3510000 CMP r1,#0
0001d0 0a000002 BEQ |L1.480|
0001d4 e5d10000 LDRB r0,[r1,#0]
0001d8 e3500000 CMP r0,#0
0001dc 1afffff3 BNE |L1.432|
|L1.480|
0001e0 e3a00000 MOV r0,#0
0001e4 e5c30000 STRB r0,[r3,#0]
0001e8 e1a00002 MOV r0,r2
0001ec eaffffda B |L1.348|
ENDP
Str_Cat_N PROC
;;;449 CPU_SIZE_T len_max)
;;;450 {
0001f0 e92d4010 PUSH {r4,lr}
0001f4 e1a03000 MOV r3,r0
;;;451 CPU_CHAR *pstr;
;;;452 CPU_CHAR *pstr_next;
;;;453 CPU_SIZE_T len_cat;
;;;454
;;;455 /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
;;;456 if (pdest == (CPU_CHAR *)0) {
0001f8 e3530000 CMP r3,#0
0001fc 1a000002 BNE |L1.524|
;;;457 return ((CPU_CHAR *)0);
000200 e3a00000 MOV r0,#0
|L1.516|
000204 e8bd4010 POP {r4,lr}
;;;458 }
;;;459 if (pstr_cat == (CPU_CHAR *)0) {
;;;460 return ((CPU_CHAR *)0);
;;;461 }
;;;462
;;;463 if (len_max == (CPU_SIZE_T)0) { /* Rtn NULL if cat len equals zero (see Note #2e). */
;;;464 return ((CPU_CHAR *)0);
;;;465 }
;;;466
;;;467
;;;468 pstr = pdest;
;;;469 while (( pstr != (CPU_CHAR *)0) && /* Adv to end of cur dest str until NULL ptr ... */
;;;470 (*pstr != (CPU_CHAR )0)) { /* ... or NULL char found.. */
;;;471 pstr++;
;;;472 }
;;;473 if (pstr == (CPU_CHAR *)0) { /* If NULL str overrun, rtn NULL (see Note #2b). */
;;;474 return ((CPU_CHAR *)0);
;;;475 }
;;;476
;;;477 pstr_next = pstr;
;;;478 pstr_next++;
;;;479 len_cat = 0;
;;;480
;;;481 while (( pstr_next != (CPU_CHAR *)0) && /* Cat str until NULL ptr(s) (see Note #2c) ... */
;;;482 ( pstr_cat != (CPU_CHAR *)0) &&
;;;483 (*pstr_cat != (CPU_CHAR )0) && /* ... or NULL char found (see Note #2d); ... */
;;;484 ( len_cat < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars cat'd (see Note #2d). */
;;;485 *pstr = *pstr_cat;
;;;486 pstr++;
;;;487 pstr_next++;
;;;488 pstr_cat++;
;;;489 len_cat++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -