📄 lib_str.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 919] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\lib_str.o --depend=.\rvmdk\lib_str.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_str.crf ..\..\..\..\..\uC-LIB\lib_str.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
Str_Len PROC
000000 e3a01000 MOV r1,#0
000004 ea000001 B |L1.16|
|L1.8|
000008 e2811001 ADD r1,r1,#1
00000c e2800001 ADD r0,r0,#1
|L1.16|
000010 e3500000 CMP r0,#0
000014 15d02000 LDRBNE r2,[r0,#0]
000018 13520000 CMPNE r2,#0
00001c 1afffff9 BNE |L1.8|
000020 e1a00001 MOV r0,r1
000024 e12fff1e BX lr
ENDP
Str_Copy PROC
;;;200 /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
;;;201 if (pdest == (CPU_CHAR *)0) {
000028 e3500000 CMP r0,#0
;;;202 return ((CPU_CHAR *)0);
;;;203 }
;;;204 if (psrc == (CPU_CHAR *)0) {
00002c 13510000 CMPNE r1,#0
;;;205 return ((CPU_CHAR *)0);
000030 03a00000 MOVEQ r0,#0
;;;206 }
;;;207
;;;208
;;;209 pstr = pdest;
;;;210 pstr_next = pstr;
;;;211 pstr_next++;
;;;212 while (( pstr_next != (CPU_CHAR *)0) && /* Copy str until NULL ptr(s) (see Note #2b) ... */
;;;213 ( psrc != (CPU_CHAR *)0) &&
;;;214 (*psrc != (CPU_CHAR )0)) { /* ... or NULL char found (see Note #2c). */
;;;215 *pstr = *psrc;
;;;216 pstr++;
;;;217 pstr_next++;
;;;218 psrc++;
;;;219 }
;;;220
;;;221 *pstr = (CPU_CHAR)0; /* Append NULL char (see Note #2b2). */
;;;222
;;;223
;;;224 return (pdest);
;;;225 }
000034 012fff1e BXEQ lr
000038 e1a02000 MOV r2,r0 ;209
00003c e2803001 ADD r3,r0,#1 ;211
000040 ea000002 B |L1.80|
|L1.68|
000044 e2833001 ADD r3,r3,#1 ;217
000048 e2811001 ADD r1,r1,#1 ;218
00004c e4c2c001 STRB r12,[r2],#1 ;215
|L1.80|
000050 e3530000 CMP r3,#0 ;212
000054 13510000 CMPNE r1,#0 ;213
000058 15d1c000 LDRBNE r12,[r1,#0] ;214
00005c 135c0000 CMPNE r12,#0 ;214
000060 1afffff7 BNE |L1.68|
000064 e3a01000 MOV r1,#0 ;221
000068 e5c21000 STRB r1,[r2,#0] ;221
00006c e12fff1e BX lr
;;;226
ENDP
Str_Copy_N PROC
;;;281 /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
;;;282 if (pdest == (CPU_CHAR *)0) {
000070 e3500000 CMP r0,#0
;;;283 return ((CPU_CHAR *)0);
;;;284 }
;;;285 if (psrc == (CPU_CHAR *)0) {
000074 13510000 CMPNE r1,#0
;;;286 return ((CPU_CHAR *)0);
;;;287 }
;;;288
;;;289 if (len_max == (CPU_SIZE_T)0) { /* Rtn NULL if copy len equals zero (see Note #2d). */
000078 13520000 CMPNE r2,#0
00007c e92d4010 PUSH {r4,lr}
;;;290 return ((CPU_CHAR *)0);
000080 03a00000 MOVEQ r0,#0
000084 0a00000f BEQ |L1.200|
;;;291 }
;;;292
;;;293
;;;294 pstr = pdest;
000088 e1a03000 MOV r3,r0
;;;295 pstr_next = pstr;
;;;296 pstr_next++;
00008c e280e001 ADD lr,r0,#1
;;;297 len_copy = 0;
000090 e3a0c000 MOV r12,#0
;;;298
;;;299 while (( pstr_next != (CPU_CHAR *)0) && /* Copy str until NULL ptr(s) (see Note #2b) ... */
000094 ea000003 B |L1.168|
|L1.152|
;;;300 ( psrc != (CPU_CHAR *)0) &&
;;;301 (*psrc != (CPU_CHAR )0) && /* ... or NULL char found (see Note #2c); ... */
;;;302 ( len_copy < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars copied (see Note #2d). */
;;;303 *pstr = *psrc;
;;;304 pstr++;
;;;305 pstr_next++;
000098 e28ee001 ADD lr,lr,#1
;;;306 psrc++;
00009c e2811001 ADD r1,r1,#1
;;;307 len_copy++;
0000a0 e28cc001 ADD r12,r12,#1
0000a4 e4c34001 STRB r4,[r3],#1 ;303
|L1.168|
0000a8 e35e0000 CMP lr,#0 ;299
0000ac 13510000 CMPNE r1,#0 ;300
0000b0 15d14000 LDRBNE r4,[r1,#0] ;301
0000b4 13540000 CMPNE r4,#0 ;301
0000b8 115c0002 CMPNE r12,r2 ;302
0000bc 3afffff5 BCC |L1.152|
;;;308 }
;;;309
;;;310 *pstr = (CPU_CHAR)0; /* Append NULL char (see Note #2b2). */
0000c0 e3a01000 MOV r1,#0
0000c4 e5c31000 STRB r1,[r3,#0]
|L1.200|
;;;311
;;;312
;;;313 return (pdest);
0000c8 e8bd4010 POP {r4,lr}
;;;314 }
0000cc e12fff1e BX lr
;;;315
ENDP
Str_Cat PROC
;;;364 /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
;;;365 if (pdest == (CPU_CHAR *)0) {
0000d0 e3500000 CMP r0,#0
;;;366 return ((CPU_CHAR *)0);
;;;367 }
;;;368 if (pstr_cat == (CPU_CHAR *)0) {
0000d4 13510000 CMPNE r1,#0
0000d8 0a000008 BEQ |L1.256|
;;;369 return ((CPU_CHAR *)0);
;;;370 }
;;;371
;;;372
;;;373 pstr = pdest;
0000dc e1a02000 MOV r2,r0
;;;374 while (( pstr != (CPU_CHAR *)0) && /* Adv to end of cur dest str until NULL ptr ... */
0000e0 ea000001 B |L1.236|
|L1.228|
;;;375 (*pstr != (CPU_CHAR )0)) { /* ... or NULL char found.. */
;;;376 pstr++;
0000e4 e2922001 ADDS r2,r2,#1
0000e8 0a000004 BEQ |L1.256|
|L1.236|
0000ec e5d23000 LDRB r3,[r2,#0] ;375
0000f0 e3530000 CMP r3,#0 ;375
0000f4 1afffffa BNE |L1.228|
;;;377 }
;;;378 if (pstr == (CPU_CHAR *)0) { /* If NULL str overrun, rtn NULL (see Note #2b). */
;;;379 return ((CPU_CHAR *)0);
;;;380 }
;;;381
;;;382 pstr_next = pstr;
;;;383 pstr_next++;
0000f8 e2823001 ADD r3,r2,#1
;;;384 while (( pstr_next != (CPU_CHAR *)0) && /* Cat str until NULL ptr(s) (see Note #2c) ... */
0000fc ea000004 B |L1.276|
|L1.256|
000100 e3a00000 MOV r0,#0 ;379
;;;385 ( pstr_cat != (CPU_CHAR *)0) &&
;;;386 (*pstr_cat != (CPU_CHAR )0)) { /* ... or NULL char found (see Note #2d). */
;;;387 *pstr = *pstr_cat;
;;;388 pstr++;
;;;389 pstr_next++;
;;;390 pstr_cat++;
;;;391 }
;;;392
;;;393 *pstr = (CPU_CHAR)0; /* Append NULL char (see Note #2c2). */
;;;394
;;;395
;;;396 return (pdest);
;;;397 }
000104 e12fff1e BX lr
|L1.264|
000108 e2833001 ADD r3,r3,#1 ;389
00010c e2811001 ADD r1,r1,#1 ;390
000110 e4c2c001 STRB r12,[r2],#1 ;387
|L1.276|
000114 e3530000 CMP r3,#0 ;384
000118 13510000 CMPNE r1,#0 ;385
00011c 15d1c000 LDRBNE r12,[r1,#0] ;386
000120 135c0000 CMPNE r12,#0 ;386
000124 1afffff7 BNE |L1.264|
000128 e3a01000 MOV r1,#0 ;393
00012c e5c21000 STRB r1,[r2,#0] ;393
000130 e12fff1e BX lr
;;;398
ENDP
Str_Cat_N PROC
;;;456 /* Rtn NULL if str ptr(s) NULL (see Note #2a). */
;;;457 if (pdest == (CPU_CHAR *)0) {
000134 e3500000 CMP r0,#0
;;;458 return ((CPU_CHAR *)0);
;;;459 }
;;;460 if (pstr_cat == (CPU_CHAR *)0) {
000138 13510000 CMPNE r1,#0
00013c e92d4010 PUSH {r4,lr}
;;;461 return ((CPU_CHAR *)0);
;;;462 }
;;;463
;;;464 if (len_max == (CPU_SIZE_T)0) { /* Rtn NULL if cat len equals zero (see Note #2e). */
000140 13520000 CMPNE r2,#0
000144 0a000009 BEQ |L1.368|
;;;465 return ((CPU_CHAR *)0);
;;;466 }
;;;467
;;;468
;;;469 pstr = pdest;
000148 e1a03000 MOV r3,r0
;;;470 while (( pstr != (CPU_CHAR *)0) && /* Adv to end of cur dest str until NULL ptr ... */
00014c ea000001 B |L1.344|
|L1.336|
;;;471 (*pstr != (CPU_CHAR )0)) { /* ... or NULL char found.. */
;;;472 pstr++;
000150 e2933001 ADDS r3,r3,#1
000154 0a000005 BEQ |L1.368|
|L1.344|
000158 e5d3c000 LDRB r12,[r3,#0] ;471
00015c e35c0000 CMP r12,#0 ;471
000160 1afffffa BNE |L1.336|
;;;473 }
;;;474 if (pstr == (CPU_CHAR *)0) { /* If NULL str overrun, rtn NULL (see Note #2b). */
;;;475 return ((CPU_CHAR *)0);
;;;476 }
;;;477
;;;478 pstr_next = pstr;
;;;479 pstr_next++;
000164 e283e001 ADD lr,r3,#1
;;;480 len_cat = 0;
000168 e3a0c000 MOV r12,#0
;;;481
;;;482 while (( pstr_next != (CPU_CHAR *)0) && /* Cat str until NULL ptr(s) (see Note #2c) ... */
00016c ea000006 B |L1.396|
|L1.368|
000170 e3a00000 MOV r0,#0 ;475
|L1.372|
000174 e8bd4010 POP {r4,lr} ;475
;;;483 ( pstr_cat != (CPU_CHAR *)0) &&
;;;484 (*pstr_cat != (CPU_CHAR )0) && /* ... or NULL char found (see Note #2d); ... */
;;;485 ( len_cat < (CPU_SIZE_T)len_max)) { /* ... or max nbr chars cat'd (see Note #2d). */
;;;486 *pstr = *pstr_cat;
;;;487 pstr++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -