📄 ggt_func.lst
字号:
00000054 E3A01000 MOV R1,#0x0
00000058 E1A00003 MOV R0,R3 ; pD
0000005C E5C01000 STRB R1,[R0,#0x0] ; pD
363: return Len;
00000060 E1A00002 MOV R0,R2 ; Len
00000064 ; SCOPE-END
364: }
00000064 E8BD0010 LDMIA R13!,{R4}
00000068 E12FFF1E BX R14
0000006C ENDP ; 'StrAdd?A'
*** CODE SEGMENT '?PR?IntToStr?A?GGT_Func':
366: void IntToStr(INT32 Data, UINT8 *pStr)
00000000 E92D4070 STMDB R13!,{R4-R6,LR}
00000004 E1A03001 MOV R3,R1 ; pStr
00000008 ---- Variable 'pStr' assigned to Register 'R3' ----
00000008 E1A05000 MOV R5,R0 ; Data
0000000C ---- Variable 'Data' assigned to Register 'R5' ----
367: {
0000000C ; SCOPE-START
370: Tmp1 = 1000000000;
0000000C E5104000 LDR R4,=0x3B9ACA00
00000010 ---- Variable 'Tmp1' assigned to Register 'R4' ----
371: if(0 > Data)
00000010 E1A00005 MOV R0,R5 ; Data
00000014 E3500000 CMP R0,#0x0000 ; Data
00000018 AA000004 BGE L_83 ; Targ=0x30
373: *pStr++ = '-';
0000001C E3A0202D MOV R2,#0x2D
00000020 E1A00003 MOV R0,R3 ; pStr
00000024 E2803001 ADD R3,R0,#0x0001 ; pStr
00000028 E5C02000 STRB R2,[R0,#0x0] ; pStr
374: Data = -Data;
0000002C E2655000 RSB R5,R5,#0x0000 ; Data
375: }
00000030 L_83:
376: if(0 == Data)
00000030 E1A00005 MOV R0,R5 ; Data
00000034 E3500000 CMP R0,#0x0000 ; Data
00000038 1A000004 BNE L_84 ; Targ=0x50
378: *pStr++ = '0';
0000003C E3A02030 MOV R2,#0x30
00000040 E1A00003 MOV R0,R3 ; pStr
00000044 E2803001 ADD R3,R0,#0x0001 ; pStr
00000048 E5C02000 STRB R2,[R0,#0x0] ; pStr
379: }else
0000004C EA00001E B L_85 ; Targ=0xCC
00000050 L_84:
381: IsTrue = 0;
00000050 E3A02000 MOV R2,#0x0
00000054 ---- Variable 'IsTrue' assigned to Register 'R2' ----
382: while(Tmp1)
00000054 L_88:
384: Tmp2 = (int)(Data / Tmp1);
00000054 E1A01004 MOV R1,R4 ; Tmp1
00000058 E1A00005 MOV R0,R5 ; Data
0000005C EBFFFFE7 BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
00000060 E1A00001 MOV R0,R1
00000064 E1A06000 MOV R6,R0 ; Tmp2
00000068 ---- Variable 'Tmp2' assigned to Register 'R6' ----
385: Data %= Tmp1;
00000068 E1A01004 MOV R1,R4 ; Tmp1
0000006C E1A00005 MOV R0,R5 ; Data
00000070 EBFFFFE2 BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
00000074 E1A01000 MOV R1,R0
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 21
00000078 E1A05001 MOV R5,R1 ; Data
386: if(IsTrue || Tmp2)
0000007C E1A00002 MOV R0,R2 ; IsTrue
00000080 E3500000 CMP R0,#0x0000 ; IsTrue
00000084 1A000002 BNE L_91 ; Targ=0x94
00000088 E1A00006 MOV R0,R6 ; Tmp2
0000008C E3500000 CMP R0,#0x0000 ; Tmp2
00000090 0A000005 BEQ L_90 ; Targ=0xAC
00000094 L_91:
388: *pStr++ = (UINT8)('0' + Tmp2);
00000094 E1A02006 MOV R2,R6 ; Tmp2
00000098 E2822030 ADD R2,R2,#0x0030 ; Tmp2
0000009C E1A00003 MOV R0,R3 ; pStr
000000A0 E2803001 ADD R3,R0,#0x0001 ; pStr
000000A4 E5C02000 STRB R2,[R0,#0x0] ; pStr
389: IsTrue = 1;
000000A8 E3A02001 MOV R2,#0x1
390: }
000000AC L_90:
391: Tmp1 = (int)(Tmp1 / 10);
000000AC E1A00004 MOV R0,R4 ; Tmp1
000000B0 E3A0100A MOV R1,#0xA
000000B4 EBFFFFD1 BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
000000B8 E1A00001 MOV R0,R1
000000BC E1A04000 MOV R4,R0 ; Tmp1
392: }
000000C0 E1A00004 MOV R0,R4 ; Tmp1
000000C4 E3500000 CMP R0,#0x0000 ; Tmp1
000000C8 1AFFFFE1 BNE L_88 ; Targ=0x54
393: }
000000CC L_85:
395: *pStr = 0;
000000CC E3A02000 MOV R2,#0x0
000000D0 E1A00003 MOV R0,R3 ; pStr
000000D4 E5C02000 STRB R2,[R0,#0x0] ; pStr
000000D8 ; SCOPE-END
396: }
000000D8 E8BD0070 LDMIA R13!,{R4-R6}
000000DC E8BD0008 LDMIA R13!,{R3}
000000E0 E12FFF13 BX R3
000000E4 ENDP ; 'IntToStr?A'
*** CODE SEGMENT '?PR?DWordToStr?A?GGT_Func':
398: void DWordToStr(UINT32 Data, UINT8 *pStr)
00000000 E92D4070 STMDB R13!,{R4-R6,LR}
00000004 E1A03001 MOV R3,R1 ; pStr
00000008 ---- Variable 'pStr' assigned to Register 'R3' ----
00000008 E1A05000 MOV R5,R0 ; Data
0000000C ---- Variable 'Data' assigned to Register 'R5' ----
399: {
0000000C ; SCOPE-START
402: Tmp1 = 1000000000;
0000000C E5104000 LDR R4,=0x3B9ACA00
00000010 ---- Variable 'Tmp1' assigned to Register 'R4' ----
404: if(0 == Data)
00000010 E1A00005 MOV R0,R5 ; Data
00000014 E3500000 CMP R0,#0x0000 ; Data
00000018 1A000004 BNE L_92 ; Targ=0x30
406: *pStr++ = '0';
0000001C E3A02030 MOV R2,#0x30
00000020 E1A00003 MOV R0,R3 ; pStr
00000024 E2803001 ADD R3,R0,#0x0001 ; pStr
00000028 E5C02000 STRB R2,[R0,#0x0] ; pStr
407: }else
0000002C EA00001E B L_93 ; Targ=0xAC
00000030 L_92:
409: IsTrue = 0;
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 22
00000030 E3A02000 MOV R2,#0x0
00000034 ---- Variable 'IsTrue' assigned to Register 'R2' ----
410: while(Tmp1)
00000034 L_96:
412: Tmp2 = (UINT32)(Data / Tmp1);
00000034 E1A01004 MOV R1,R4 ; Tmp1
00000038 E1A00005 MOV R0,R5 ; Data
0000003C EBFFFFEF BL ?C?UDIV?A ; Targ=0x0 ; ?C?UDIV?A
00000040 E1A00001 MOV R0,R1
00000044 E1A06000 MOV R6,R0 ; Tmp2
00000048 ---- Variable 'Tmp2' assigned to Register 'R6' ----
413: Data %= Tmp1;
00000048 E1A01004 MOV R1,R4 ; Tmp1
0000004C E1A00005 MOV R0,R5 ; Data
00000050 EBFFFFEA BL ?C?UDIV?A ; Targ=0x0 ; ?C?UDIV?A
00000054 E1A01000 MOV R1,R0
00000058 E1A05001 MOV R5,R1 ; Data
414: if(IsTrue || Tmp2)
0000005C E1A00002 MOV R0,R2 ; IsTrue
00000060 E3500000 CMP R0,#0x0000 ; IsTrue
00000064 1A000002 BNE L_99 ; Targ=0x74
00000068 E1A00006 MOV R0,R6 ; Tmp2
0000006C E3500000 CMP R0,#0x0000 ; Tmp2
00000070 0A000005 BEQ L_98 ; Targ=0x8C
00000074 L_99:
416: *pStr++ = (UINT8)('0' + Tmp2);
00000074 E1A02006 MOV R2,R6 ; Tmp2
00000078 E2822030 ADD R2,R2,#0x0030 ; Tmp2
0000007C E1A00003 MOV R0,R3 ; pStr
00000080 E2803001 ADD R3,R0,#0x0001 ; pStr
00000084 E5C02000 STRB R2,[R0,#0x0] ; pStr
417: IsTrue = 1;
00000088 E3A02001 MOV R2,#0x1
418: }
0000008C L_98:
419: Tmp1 = (UINT32)(Tmp1 / 10);
0000008C E1A00004 MOV R0,R4 ; Tmp1
00000090 E3A0100A MOV R1,#0xA
00000094 EBFFFFD9 BL ?C?UDIV?A ; Targ=0x0 ; ?C?UDIV?A
00000098 E1A00001 MOV R0,R1
0000009C E1A04000 MOV R4,R0 ; Tmp1
420: }
000000A0 E1A00004 MOV R0,R4 ; Tmp1
000000A4 E3500000 CMP R0,#0x0000 ; Tmp1
000000A8 1AFFFFE1 BNE L_96 ; Targ=0x34
421: }
000000AC L_93:
423: *pStr = 0;
000000AC E3A02000 MOV R2,#0x0
000000B0 E1A00003 MOV R0,R3 ; pStr
000000B4 E5C02000 STRB R2,[R0,#0x0] ; pStr
000000B8 ; SCOPE-END
424: }
000000B8 E8BD0070 LDMIA R13!,{R4-R6}
000000BC E8BD0008 LDMIA R13!,{R3}
000000C0 E12FFF13 BX R3
000000C4 ENDP ; 'DWordToStr?A'
*** CODE SEGMENT '?PR?FloatToStr?A?GGT_Func':
426: void FloatToStr(float fData, UINT8 *pStr)
00000000 E92D40F0 STMDB R13!,{R4-R7,LR}
00000004 E1A03001 MOV R3,R1 ; pStr
00000008 ---- Variable 'pStr' assigned to Register 'R3' ----
00000008 E1A05000 MOV R5,R0 ; fData
0000000C ---- Variable 'fData' assigned to Register 'R5' ----
427: {
0000000C ; SCOPE-START
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 23
430: Tmp1 = 1000000000;
0000000C E5102000 LDR R2,=0x3B9ACA00
00000010 ---- Variable 'Tmp1' assigned to Register 'R2' ----
431: iData = (int)fData;
00000010 E1A00005 MOV R0,R5 ; fData
00000014 EBFFFFF9 BL ?C?CASTF?A ; Targ=0x0 ; ?C?CASTF?A
00000018 E1A06000 MOV R6,R0 ; iData
0000001C ---- Variable 'iData' assigned to Register 'R6' ----
432: fData = fData - iData;
0000001C E1A00006 MOV R0,R6 ; iData
00000020 EBFFFFF6 BL ?C?FCAST?A ; Targ=0x0 ; ?C?FCAST?A
00000024 E1A01000 MOV R1,R0
00000028 E1A00005 MOV R0,R5 ; fData
0000002C EBFFFFF3 BL ?C?FPSUB?A ; Targ=0x0 ; ?C?FPSUB?A
00000030 E1A05000 MOV R5,R0 ; fData
433: if(0 > iData)
00000034 E1A00006 MOV R0,R6 ; iData
00000038 E3500000 CMP R0,#0x0000 ; iData
0000003C AA000007 BGE L_100 ; Targ=0x60
435: *pStr++ = '-';
00000040 E3A0402D MOV R4,#0x2D
00000044 E1A00003 MOV R0,R3 ; pStr
00000048 E2803001 ADD R3,R0,#0x0001 ; pStr
0000004C E5C04000 STRB R4,[R0,#0x0] ; pStr
436: iData = -iData;
00000050 E2666000 RSB R6,R6,#0x0000 ; iData
437: fData = -fData;
00000054 E1A00005 MOV R0,R5 ; fData
00000058 EBFFFFE8 BL ?C?FPNEG?A ; Targ=0x0 ; ?C?FPNEG?A
0000005C E1A05000 MOV R5,R0 ; fData
438: }
00000060 L_100:
440: if(0 == iData)
00000060 E1A00006 MOV R0,R6 ; iData
00000064 E3500000 CMP R0,#0x0000 ; iData
00000068 1A000004 BNE L_101 ; Targ=0x80
442: *pStr++ = '0';
0000006C E3A04030 MOV R4,#0x30
00000070 E1A00003 MOV R0,R3 ; pStr
00000074 E2803001 ADD R3,R0,#0x0001 ; pStr
00000078 E5C04000 STRB R4,[R0,#0x0] ; pStr
443: }else
0000007C EA00001E B L_102 ; Targ=0xFC
00000080 L_101:
445: IsTrue = 0;
00000080 E3A04000 MOV R4,#0x0
00000084 ---- Variable 'IsTrue' assigned to Register 'R4' ----
446: while(Tmp1)
00000084 L_105:
448: Tmp2 = (int)(iData / Tmp1);
00000084 E1A01002 MOV R1,R2 ; Tmp1
00000088 E1A00006 MOV R0,R6 ; iData
0000008C EBFFFFDB BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
00000090 E1A00001 MOV R0,R1
00000094 E1A07000 MOV R7,R0 ; Tmp2
00000098 ---- Variable 'Tmp2' assigned to Register 'R7' ----
449: iData %= Tmp1;
00000098 E1A01002 MOV R1,R2 ; Tmp1
0000009C E1A00006 MOV R0,R6 ; iData
000000A0 EBFFFFD6 BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
000000A4 E1A01000 MOV R1,R0
000000A8 E1A06001 MOV R6,R1 ; iData
450: if(IsTrue || Tmp2)
000000AC E1A00004 MOV R0,R4 ; IsTrue
000000B0 E3500000 CMP R0,#0x0000 ; IsTrue
000000B4 1A000002 BNE L_108 ; Targ=0xC4
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 24
000000B8 E1A00007 MOV R0,R7 ; Tmp2
000000BC E3500000 CMP R0,#0x0000 ; Tmp2
000000C0 0A000005 BEQ L_107 ; Targ=0xDC
000000C4 L_108:
452: *pStr++ = (UINT8)('0' + Tmp2);
000000C4 E1A04007 MOV R4,R7 ; Tmp2
000000C8 E2844030 ADD R4,R4,#0x0030 ; Tmp2
000000CC E1A00003 MOV R0,R3 ; pStr
000000D0 E2803001 ADD R3,R0,#0x0001 ; pStr
000000D4 E5C04000 STRB R4,[R0,#0x0] ; pStr
453: IsTrue = 1;
000000D8 E3A04001 MOV R4,#0x1
454: }
000000DC L_107:
455: Tmp1 = (int)(Tmp1 / 10);
000000DC E1A00002 MOV R0,R2 ; Tmp1
000000E0 E3A0100A MOV R1,#0xA
000000E4 EBFFFFC5 BL ?C?SDIV?A ; Targ=0x0 ; ?C?SDIV?A
000000E8 E1A00001 MOV R0,R1
000000EC E1A02000 MOV R2,R0 ; Tmp1
456: }
000000F0 E1A00002 MOV R0,R2 ; Tmp1
000000F4 E3500000 CMP R0,#0x0000 ; Tmp1
000000F8 1AFFFFE1 BNE L_105 ; Targ=0x84
457: }
000000FC L_102:
459: *pStr++ = '.';
000000FC E3A0402E MOV R4,#0x2E
00000100 E1A00003 MOV R0,R3 ; pStr
00000104 E2803001 ADD R3,R0,#0x0001 ; pStr
00000108 E5C04000 STRB R4,[R0,#0x0] ; pStr
460: if(0 == fData)
0000010C E1A00005 MOV R0,R5 ; fData
00000110 E3500000 CMP R0,#0x0000 ; fData
00000114 1A000004 BNE L_114 ; Targ=0x12C
462: *pStr++ = '0';
00000118 E3A04
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -