📄 ggt_func.lst
字号:
300 2 pStr++;
301 2 }else
302 1 RR = 1;
303 1
304 1 while(*pStr)
305 1 {
306 2 if('.' == *pStr)
307 2 {
308 3 IsFloat = 1;
309 3 }else
310 2 {
311 3 R = R * 10 + (*pStr - '0');
312 3 if(IsFloat)
313 3 RR *= 10;
314 3 }
315 2
316 2 pStr++;
317 2 }
318 1
319 1 return(R / RR);
320 1 }
321
322 void MemoCopy(UINT8 *pD, UINT8 *pS, INT32 iLen)
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 6
323 {
324 1 while(iLen)
325 1 {
326 2 *pD = *pS;
327 2 pD++;
328 2 pS++;
329 2 iLen--;
330 2 }
331 1 }
332
333 INT32 StrCopy(UINT8 *pD, UINT8 *pS)
334 {
335 1 INT32 Len = 0;
336 1
337 1 while(*pS)
338 1 {
339 2 *pD = *pS;
340 2 pD++;
341 2 pS++;
342 2 Len++;
343 2 }
344 1 *pD = 0;
345 1 return Len;
346 1 }
347
348 INT32 StrAdd(UINT8 *pD, UINT8 *pS)
349 {
350 1 INT32 Len = 0;
351 1
352 1 while(*pD)
353 1 pD++;
354 1
355 1 while(*pS)
356 1 {
357 2 *pD = *pS;
358 2 pD++;
359 2 pS++;
360 2 Len++;
361 2 }
362 1 *pD = 0;
363 1 return Len;
364 1 }
365
366 void IntToStr(INT32 Data, UINT8 *pStr)
367 {
368 1 INT32 Tmp1, Tmp2, IsTrue;
369 1
370 1 Tmp1 = 1000000000;
371 1 if(0 > Data)
372 1 {
373 2 *pStr++ = '-';
374 2 Data = -Data;
375 2 }
376 1 if(0 == Data)
377 1 {
378 2 *pStr++ = '0';
379 2 }else
380 1 {
381 2 IsTrue = 0;
382 2 while(Tmp1)
383 2 {
384 3 Tmp2 = (int)(Data / Tmp1);
385 3 Data %= Tmp1;
386 3 if(IsTrue || Tmp2)
387 3 {
388 4 *pStr++ = (UINT8)('0' + Tmp2);
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 7
389 4 IsTrue = 1;
390 4 }
391 3 Tmp1 = (int)(Tmp1 / 10);
392 3 }
393 2 }
394 1
395 1 *pStr = 0;
396 1 }
397
398 void DWordToStr(UINT32 Data, UINT8 *pStr)
399 {
400 1 UINT32 Tmp1, Tmp2, IsTrue;
401 1
402 1 Tmp1 = 1000000000;
403 1
404 1 if(0 == Data)
405 1 {
406 2 *pStr++ = '0';
407 2 }else
408 1 {
409 2 IsTrue = 0;
410 2 while(Tmp1)
411 2 {
412 3 Tmp2 = (UINT32)(Data / Tmp1);
413 3 Data %= Tmp1;
414 3 if(IsTrue || Tmp2)
415 3 {
416 4 *pStr++ = (UINT8)('0' + Tmp2);
417 4 IsTrue = 1;
418 4 }
419 3 Tmp1 = (UINT32)(Tmp1 / 10);
420 3 }
421 2 }
422 1
423 1 *pStr = 0;
424 1 }
425
426 void FloatToStr(float fData, UINT8 *pStr)
427 {
428 1 INT32 Tmp1, Tmp2, IsTrue, iData;
429 1
430 1 Tmp1 = 1000000000;
431 1 iData = (int)fData;
432 1 fData = fData - iData;
433 1 if(0 > iData)
434 1 {
435 2 *pStr++ = '-';
436 2 iData = -iData;
437 2 fData = -fData;
438 2 }
439 1
440 1 if(0 == iData)
441 1 {
442 2 *pStr++ = '0';
443 2 }else
444 1 {
445 2 IsTrue = 0;
446 2 while(Tmp1)
447 2 {
448 3 Tmp2 = (int)(iData / Tmp1);
449 3 iData %= Tmp1;
450 3 if(IsTrue || Tmp2)
451 3 {
452 4 *pStr++ = (UINT8)('0' + Tmp2);
453 4 IsTrue = 1;
454 4 }
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 8
455 3 Tmp1 = (int)(Tmp1 / 10);
456 3 }
457 2 }
458 1
459 1 *pStr++ = '.';
460 1 if(0 == fData)
461 1 {
462 2 *pStr++ = '0';
463 2 }else
464 1 {
465 2 while(fData > 0)
466 2 {
467 3 fData = fData * 10;
468 3 Tmp1 = (int)fData;
469 3 *pStr++ = (UINT8)('0' + Tmp1);
470 3 fData = fData - Tmp1;
471 3 }
472 2 }
473 1
474 1 *pStr = 0;
475 1 }
476
477 INT32 StrLen(UINT8 *pStr)
478 {
479 1 INT32 iLen;
480 1
481 1 iLen = 0;
482 1
483 1 while(*pStr)
484 1 {
485 2 pStr++;
486 2 iLen++;
487 2 }
488 1
489 1 return(iLen);
490 1 }
491
492 INT32 StrNCmp(UINT8 *pStr, UINT8 *pBuf)
493 {
494 1 INT32 R;
495 1
496 1 R = 0;
497 1
498 1 while(*pStr)
499 1 {
500 2 R = ((int)(*pStr)) - ((int)(*pBuf));
501 2 if(0 != R)
502 2 return R;
503 2 *pStr++;
504 2 *pBuf++;
505 2 }
506 1
507 1 return R;
508 1 }
509
510 UINT8* FindChar(UINT8 *pBuf, INT32 Len, UINT8 Char)
511 {
512 1 while(Len--)
513 1 {
514 2 if(*pBuf == Char)
515 2 {
516 3 return pBuf;
517 3 }
518 2 *pBuf++;
519 2 }
520 1 return 0;
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 9
521 1 }
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 10
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE32 (?C?FPMUL?A)
EXTERN CODE32 (?C?FCAST?A)
EXTERN CODE32 (?C?FPADD?A)
EXTERN CODE32 (?C?FPDIV?A)
EXTERN CODE32 (?C?SDIV?A)
EXTERN CODE32 (?C?UDIV?A)
EXTERN CODE32 (?C?CASTF?A)
EXTERN CODE32 (?C?FPSUB?A)
EXTERN CODE32 (?C?FPNEG?A)
EXTERN CODE32 (?C?FPCMP?A)
*** PUBLICS:
PUBLIC ListFirst?A
PUBLIC ListAppend?A
PUBLIC ListDelete?A
PUBLIC ListInsert?A
PUBLIC BoxInit?A
PUBLIC BoxAlloc?A
PUBLIC BoxFree?A
PUBLIC ClearBuf?A
PUBLIC FullBuf?A
PUBLIC StrToDWord?A
PUBLIC StrToInt?A
PUBLIC HexCharToDWord?A
PUBLIC HexToDWord?A
PUBLIC StrToFloat?A
PUBLIC MemoCopy?A
PUBLIC StrCopy?A
PUBLIC StrAdd?A
PUBLIC IntToStr?A
PUBLIC DWordToStr?A
PUBLIC FloatToStr?A
PUBLIC StrLen?A
PUBLIC StrNCmp?A
PUBLIC FindChar?A
*** CODE SEGMENT '?PR?ListFirst?A?GGT_Func':
47: void ListFirst(void *pFirst, void *pNode)
00000000 E92D0010 STMDB R13!,{R4}
00000004 E1A03001 MOV R3,R1 ; pNode
00000008 ---- Variable 'pNode' assigned to Register 'R3' ----
00000008 E1A02000 MOV R2,R0 ; pFirst
0000000C ---- Variable 'pFirst' assigned to Register 'R2' ----
49: *(void **)pNode = *(void **)pFirst;
0000000C E1A00002 MOV R0,R2 ; pFirst
00000010 E5904000 LDR R4,[R0,#0x0] ; pFirst
00000014 E1A00003 MOV R0,R3 ; pNode
00000018 E5804000 STR R4,[R0,#0x0] ; pNode
50: *(void **)pFirst = pNode;
0000001C E1A01003 MOV R1,R3 ; pNode
00000020 E1A00002 MOV R0,R2 ; pFirst
00000024 E5801000 STR R1,[R0,#0x0] ; pFirst
51: }
00000028 E8BD0010 LDMIA R13!,{R4}
0000002C E12FFF1E BX R14
00000030 ENDP ; 'ListFirst?A'
*** CODE SEGMENT '?PR?ListAppend?A?GGT_Func':
69: void ListAppend(void *pFirst, void *pNode)
00000000 E92D0010 STMDB R13!,{R4}
00000004 E1A03001 MOV R3,R1 ; pNode
00000008 ---- Variable 'pNode' assigned to Register 'R3' ----
00000008 E1A02000 MOV R2,R0 ; pFirst
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 11
0000000C ---- Variable 'pFirst' assigned to Register 'R2' ----
71: *(void **)pNode = 0;
0000000C E3A04000 MOV R4,#0x0
00000010 E1A00003 MOV R0,R3 ; pNode
00000014 E5804000 STR R4,[R0,#0x0] ; pNode
72: while(*(void **)pFirst)
00000018 EA000001 B L_1 ; Targ=0x24
0000001C L_3:
73: pFirst = (void **)(*(void **)pFirst);
0000001C E1A00002 MOV R0,R2 ; pFirst
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -