⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ggt_func.lst

📁 ARM下的多任务操作系统源码:GogotoOS
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -