📄 ggt_func.lst
字号:
*** CODE SEGMENT '?PR?StrToInt?A?GGT_Func':
254: INT32 StrToInt(UINT8 *pStr)
00000000 E92D4010 STMDB R13!,{R4,LR}
00000004 E1A04000 MOV R4,R0 ; pStr
00000008 ---- Variable 'pStr' assigned to Register 'R4' ----
256: if('-' == *pStr)
00000008 E1A00004 MOV R0,R4 ; pStr
0000000C E5D00000 LDRB R0,[R0,#0x0] ; pStr
00000010 E350002D CMP R0,#0x002D
00000014 1A000004 BNE L_40 ; Targ=0x2C
257: return(-((int)StrToDWord(pStr + 1)));
00000018 E1A00004 MOV R0,R4 ; pStr
0000001C E2800001 ADD R0,R0,#0x0001 ; pStr
00000020 EBFFFFF6 BL StrToDWord?A ; Targ=0x0
00000024 E2600000 RSB R0,R0,#0x0000 ; StrToDWord?A
00000028 EA000001 B L_41 ; Targ=0x34
0000002C L_40:
259: return((int)StrToDWord(pStr));
0000002C E1A00004 MOV R0,R4 ; pStr
00000030 EBFFFFF2 BL StrToDWord?A ; Targ=0x0
260: }
00000034 L_41:
00000034 E8BD0010 LDMIA R13!,{R4}
00000038 E8BD0008 LDMIA R13!,{R3}
0000003C E12FFF13 BX R3
00000040 ENDP ; 'StrToInt?A'
*** CODE SEGMENT '?PR?HexCharToDWord?A?GGT_Func':
262: UINT32 HexCharToDWord(UINT8 Char)
00000000 E1A02000 MOV R2,R0 ; Char
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 16
00000004 ---- Variable 'Char' assigned to Register 'R2' ----
264: if(('0' <= Char) && ('9' >= Char))
00000004 E1A00002 MOV R0,R2 ; Char
00000008 E1A01C00 MOV R1,R0,LSL #24 ; Char
0000000C E1A01C21 MOV R1,R1,LSR #24
00000010 E3510030 CMP R1,#0x0030
00000014 BA000003 BLT L_43 ; Targ=0x28
00000018 E3510039 CMP R1,#0x0039
0000001C CA000001 BGT L_43 ; Targ=0x28
265: return(Char - '0');
00000020 E2410030 SUB R0,R1,#0x0030
00000024 EA00000C B L_44 ; Targ=0x5C
00000028 L_43:
267: if(('A' <= Char) && ('F' >= Char))
00000028 E3510041 CMP R1,#0x0041
0000002C BA000003 BLT L_46 ; Targ=0x40
00000030 E3510046 CMP R1,#0x0046
00000034 CA000001 BGT L_46 ; Targ=0x40
268: return(10 + (Char - 'A'));
00000038 E2410037 SUB R0,R1,#0x0037
0000003C EA000006 B L_44 ; Targ=0x5C
00000040 L_46:
270: if(('a' <= Char) && ('f' >= Char))
00000040 E3510061 CMP R1,#0x0061
00000044 BA000003 BLT L_48 ; Targ=0x58
00000048 E3510066 CMP R1,#0x0066
0000004C CA000001 BGT L_48 ; Targ=0x58
271: return(10 + (Char - 'a'));
00000050 E2410057 SUB R0,R1,#0x0057
00000054 EA000000 B L_44 ; Targ=0x5C
00000058 L_48:
273: return(0);
00000058 E3A00000 MOV R0,#0x0
274: }
0000005C L_44:
0000005C E12FFF1E BX R14
00000060 ENDP ; 'HexCharToDWord?A'
*** CODE SEGMENT '?PR?HexToDWord?A?GGT_Func':
276: UINT32 HexToDWord(UINT8 *pStr)
00000000 E92D4010 STMDB R13!,{R4,LR}
00000004 E1A04000 MOV R4,R0 ; pStr
00000008 ---- Variable 'pStr' assigned to Register 'R4' ----
277: {
00000008 ; SCOPE-START
280: R = 0;
00000008 E3A03000 MOV R3,#0x0
0000000C ---- Variable 'R' assigned to Register 'R3' ----
281: while(*pStr)
0000000C EA000005 B L_50 ; Targ=0x28
00000010 L_52:
283: R = R * 16 + HexCharToDWord(*pStr);
00000010 E1A00004 MOV R0,R4 ; pStr
00000014 E5D00000 LDRB R0,[R0,#0x0] ; pStr
00000018 EBFFFFF8 BL HexCharToDWord?A ; Targ=0x0
0000001C E1A03203 MOV R3,R3,LSL #4 ; R
00000020 E0833000 ADD R3,R3,R0 ; HexCharToDWord?A
284: pStr++;
00000024 E2844001 ADD R4,R4,#0x0001 ; pStr
285: }
00000028 L_50:
00000028 E1A00004 MOV R0,R4 ; pStr
0000002C E5D00000 LDRB R0,[R0,#0x0] ; pStr
00000030 E3500000 CMP R0,#0x0000
00000034 1AFFFFF5 BNE L_52 ; Targ=0x10
286: return(R);
00000038 E1A00003 MOV R0,R3 ; R
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 17
0000003C ; SCOPE-END
287: }
0000003C E8BD0010 LDMIA R13!,{R4}
00000040 E8BD0008 LDMIA R13!,{R3}
00000044 E12FFF13 BX R3
00000048 ENDP ; 'HexToDWord?A'
*** CODE SEGMENT '?PR?StrToFloat?A?GGT_Func':
289: float StrToFloat(UINT8 *pStr)
00000000 E92D4070 STMDB R13!,{R4-R6,LR}
00000004 E1A05000 MOV R5,R0 ; pStr
00000008 ---- Variable 'pStr' assigned to Register 'R5' ----
00000008 ---- Variable 'RR' assigned to Register 'R2' ----
290: {
00000008 ; SCOPE-START
294: R = 0;
00000008 E3A03000 MOV R3,#0x0
0000000C ---- Variable 'R' assigned to Register 'R3' ----
295: IsFloat = 0;
0000000C E3A04000 MOV R4,#0x0
00000010 ---- Variable 'IsFloat' assigned to Register 'R4' ----
297: if('-' == *pStr)
00000010 E1A00005 MOV R0,R5 ; pStr
00000014 E5D00000 LDRB R0,[R0,#0x0] ; pStr
00000018 E350002D CMP R0,#0x002D
0000001C 1A000002 BNE L_55 ; Targ=0x2C
299: RR = -1;
00000020 E5102000 LDR R2,=0xBF800000
300: pStr++;
00000024 E2855001 ADD R5,R5,#0x0001 ; pStr
301: }else
00000028 EA000000 B L_60 ; Targ=0x30
0000002C L_55:
302: RR = 1;
0000002C E3A025FE MOV R2,#0x3F800000
304: while(*pStr)
00000030 L_60:
00000030 EA000017 B L_57 ; Targ=0x94
00000034 L_59:
306: if('.' == *pStr)
00000034 E1A00005 MOV R0,R5 ; pStr
00000038 E5D06000 LDRB R6,[R0,#0x0] ; pStr
0000003C E356002E CMP R6,#0x002E
00000040 1A000001 BNE L_61 ; Targ=0x4C
308: IsFloat = 1;
00000044 E3A04001 MOV R4,#0x1
309: }else
00000048 EA000010 B L_62 ; Targ=0x90
0000004C L_61:
311: R = R * 10 + (*pStr - '0');
0000004C E5101000 LDR R1,=0x41200000
00000050 E1A00003 MOV R0,R3 ; R
00000054 EBFFFFE9 BL ?C?FPMUL?A ; Targ=0x0 ; ?C?FPMUL?A
00000058 E1A03000 MOV R3,R0
0000005C E2460030 SUB R0,R6,#0x0030
00000060 EBFFFFE6 BL ?C?FCAST?A ; Targ=0x0 ; ?C?FCAST?A
00000064 E1A01000 MOV R1,R0
00000068 E1A00003 MOV R0,R3
0000006C EBFFFFE3 BL ?C?FPADD?A ; Targ=0x0 ; ?C?FPADD?A
00000070 E1A03000 MOV R3,R0 ; R
312: if(IsFloat)
00000074 E1A00004 MOV R0,R4 ; IsFloat
00000078 E3500000 CMP R0,#0x0000 ; IsFloat
0000007C 0A000003 BEQ L_62 ; Targ=0x90
313: RR *= 10;
00000080 E1A00002 MOV R0,R2 ; RR
00000084 E5101000 LDR R1,=0x41200000
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 18
00000088 EBFFFFDC BL ?C?FPMUL?A ; Targ=0x0 ; ?C?FPMUL?A
0000008C E1A02000 MOV R2,R0 ; RR
314: }
00000090 L_62:
316: pStr++;
00000090 E2855001 ADD R5,R5,#0x0001 ; pStr
317: }
00000094 L_57:
00000094 E1A00005 MOV R0,R5 ; pStr
00000098 E5D00000 LDRB R0,[R0,#0x0] ; pStr
0000009C E3500000 CMP R0,#0x0000
000000A0 1AFFFFE3 BNE L_59 ; Targ=0x34
319: return(R / RR);
000000A4 E1A01002 MOV R1,R2 ; RR
000000A8 E1A00003 MOV R0,R3 ; R
000000AC EBFFFFD3 BL ?C?FPDIV?A ; Targ=0x0 ; ?C?FPDIV?A
000000B0 ; SCOPE-END
320: }
000000B0 E8BD0070 LDMIA R13!,{R4-R6}
000000B4 E8BD0008 LDMIA R13!,{R3}
000000B8 E12FFF13 BX R3
000000BC ENDP ; 'StrToFloat?A'
*** CODE SEGMENT '?PR?MemoCopy?A?GGT_Func':
322: void MemoCopy(UINT8 *pD, UINT8 *pS, INT32 iLen)
00000000 E92D0010 STMDB R13!,{R4}
00000004 ---- Variable 'iLen' assigned to Register 'R2' ----
00000004 ---- Variable 'pS' assigned to Register 'R1' ----
00000004 ---- Variable 'pD' assigned to Register 'R0' ----
324: while(iLen)
00000004 EA000006 B L_65 ; Targ=0x24
00000008 L_67:
326: *pD = *pS;
00000008 E1A03001 MOV R3,R1 ; pS
0000000C E5D34000 LDRB R4,[R3,#0x0] ; pS
00000010 E1A03000 MOV R3,R0 ; pD
00000014 E5C34000 STRB R4,[R3,#0x0] ; pD
327: pD++;
00000018 E2800001 ADD R0,R0,#0x0001 ; pD
328: pS++;
0000001C E2811001 ADD R1,R1,#0x0001 ; pS
329: iLen--;
00000020 E2422001 SUB R2,R2,#0x0001 ; iLen
330: }
00000024 L_65:
00000024 E1A03002 MOV R3,R2 ; iLen
00000028 E3530000 CMP R3,#0x0000 ; iLen
0000002C 1AFFFFF5 BNE L_67 ; Targ=0x8
331: }
00000030 E8BD0010 LDMIA R13!,{R4}
00000034 E12FFF1E BX R14
00000038 ENDP ; 'MemoCopy?A'
*** CODE SEGMENT '?PR?StrCopy?A?GGT_Func':
333: INT32 StrCopy(UINT8 *pD, UINT8 *pS)
00000000 E92D0010 STMDB R13!,{R4}
00000004 ---- Variable 'pS' assigned to Register 'R1' ----
00000004 E1A03000 MOV R3,R0 ; pD
00000008 ---- Variable 'pD' assigned to Register 'R3' ----
334: {
00000008 ; SCOPE-START
335: INT32 Len = 0;
00000008 E3A02000 MOV R2,#0x0
0000000C ---- Variable 'Len' assigned to Register 'R2' ----
337: while(*pS)
0000000C EA000006 B L_69 ; Targ=0x2C
00000010 L_71:
339: *pD = *pS;
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 19
00000010 E1A00001 MOV R0,R1 ; pS
00000014 E5D04000 LDRB R4,[R0,#0x0] ; pS
00000018 E1A00003 MOV R0,R3 ; pD
0000001C E5C04000 STRB R4,[R0,#0x0] ; pD
340: pD++;
00000020 E2833001 ADD R3,R3,#0x0001 ; pD
341: pS++;
00000024 E2811001 ADD R1,R1,#0x0001 ; pS
342: Len++;
00000028 E2822001 ADD R2,R2,#0x0001 ; Len
343: }
0000002C L_69:
0000002C E1A00001 MOV R0,R1 ; pS
00000030 E5D00000 LDRB R0,[R0,#0x0] ; pS
00000034 E3500000 CMP R0,#0x0000
00000038 1AFFFFF4 BNE L_71 ; Targ=0x10
344: *pD = 0;
0000003C E3A01000 MOV R1,#0x0
00000040 E1A00003 MOV R0,R3 ; pD
00000044 E5C01000 STRB R1,[R0,#0x0] ; pD
345: return Len;
00000048 E1A00002 MOV R0,R2 ; Len
0000004C ; SCOPE-END
346: }
0000004C E8BD0010 LDMIA R13!,{R4}
00000050 E12FFF1E BX R14
00000054 ENDP ; 'StrCopy?A'
*** CODE SEGMENT '?PR?StrAdd?A?GGT_Func':
348: INT32 StrAdd(UINT8 *pD, UINT8 *pS)
00000000 E92D0010 STMDB R13!,{R4}
00000004 ---- Variable 'pS' assigned to Register 'R1' ----
00000004 E1A03000 MOV R3,R0 ; pD
00000008 ---- Variable 'pD' assigned to Register 'R3' ----
349: {
00000008 ; SCOPE-START
350: INT32 Len = 0;
00000008 E3A02000 MOV R2,#0x0
0000000C ---- Variable 'Len' assigned to Register 'R2' ----
352: while(*pD)
0000000C EA000000 B L_74 ; Targ=0x14
00000010 L_76:
00000010 E2833001 ADD R3,R3,#0x0001 ; pD
00000014 L_74:
00000014 E1A00003 MOV R0,R3 ; pD
00000018 E5D00000 LDRB R0,[R0,#0x0] ; pD
0000001C E3500000 CMP R0,#0x0000
00000020 1AFFFFFA BNE L_76 ; Targ=0x10
355: while(*pS)
00000024 EA000006 B L_78 ; Targ=0x44
00000028 L_80:
357: *pD = *pS;
00000028 E1A00001 MOV R0,R1 ; pS
0000002C E5D04000 LDRB R4,[R0,#0x0] ; pS
00000030 E1A00003 MOV R0,R3 ; pD
00000034 E5C04000 STRB R4,[R0,#0x0] ; pD
358: pD++;
00000038 E2833001 ADD R3,R3,#0x0001 ; pD
359: pS++;
0000003C E2811001 ADD R1,R1,#0x0001 ; pS
360: Len++;
00000040 E2822001 ADD R2,R2,#0x0001 ; Len
361: }
00000044 L_78:
00000044 E1A00001 MOV R0,R1 ; pS
00000048 E5D00000 LDRB R0,[R0,#0x0] ; pS
0000004C E3500000 CMP R0,#0x0000
ARM COMPILER V2.32a, GGT_Func 28/02/08 23:05:55 PAGE 20
00000050 1AFFFFF4 BNE L_80 ; Targ=0x28
362: *pD = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -