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

📄 ggt_func.lst

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