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

📄 my_lib.lst

📁 AD9958arm控制源程序
💻 LST
字号:
ARM COMPILER V2.53,  my_lib                                                                23/07/06  16:59:04  PAGE 1   


ARM COMPILER V2.53, COMPILATION OF MODULE my_lib
OBJECT MODULE PLACED IN my_lib.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe lib\my_lib.c THUMB WARNINGLEVEL(3) OPTIMIZE(8,SPEED) DEBUG PRINT(.\MY_LIB.LS
                    -T) TABS(4) OBJECT(my_lib.obj) 

stmt  level    source

    1          /*------------------------------------------------------
    2          FILE NAME   : my_lib.c
    3          DESCRIPTION : my standard lib.
    4          VERSION     : 0.0.0 (C)aureole
    5          AUTHOR      : Aureole
    6          CREATE DATE : 4.9.2006
    7          MODIFY DATE : ---
    8          LOGS        :-\  
    9                    1. First create . 4.9.2006
   10                    
   11          
   12          --------------------------------------------------------*/
   13          
   14          
   15          
   16          //-----------------Include files------------------------//
   17          #include "..\include\my_lib.h"
   18          #include <ctype.h>
   19          #include <stdarg.h>
   20          #include <stdio.h>
   21          
   22          /*---------------------------------------------------------------
   23          NAME       : _atof
   24          ENTRY  TYPE: char *s
   25          RETURN TYPE: double
   26          PURPOSE    : ---
   27          VERSION    : 0.1
   28          DESCRIPTION: 
   29          CREATE DATE: 4.9.2006
   30          LOGS       : 1.first create;
   31          -----------------------------------------------------------------*/
   32          
   33          double __atof(char *s)
   34          {
   35   1          double value,fraction;
   36   1          int sign;
   37   1          
   38   1          //skip leading blanks;
   39   1          while(isspace(*s))s++;
   40   1          
   41   1          //Get sign;
   42   1          if(*s=='-'){
   43   2              sign=1;
   44   2              s++;
   45   2          }else{
   46   2              sign=0;
   47   2              if(*s=='+')s++;
   48   2          }
   49   1          
   50   1          //get value;
   51   1          for(value=0.0;isdigit(*s);s++)value=value*10.0+(*s-'0');
   52   1          
   53   1          if(*s=='.'){
   54   2              s++;
   55   2              for(fraction=0.1;isdigit(*s);s++){
   56   3                  value+=(*s-'0')*fraction;
   57   3                  fraction*=0.1;
   58   3              }
ARM COMPILER V2.53,  my_lib                                                                23/07/06  16:59:04  PAGE 2   

   59   2          }
   60   1              
   61   1          
   62   1          
   63   1          if(sign)value*=-1.0;
   64   1          return value;
   65   1      }
   66          
   67          int _my_sprintf(char * str,char const *format,...)
   68          {
   69   1          va_list args;
   70   1          int re;
   71   1          
   72   1          va_start(args,format);
   73   1          re=vsprintf(str,format,args);
   74   1          va_end(args);
   75   1          return re;
   76   1      }
ARM COMPILER V2.53,  my_lib                                                                23/07/06  16:59:04  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (isdigit?T)
 EXTERN CODE16 (isspace?T)
 EXTERN CODE16 (vsprintf?T)
 EXTERN CODE16 (?C?FPMUL?T)
 EXTERN CODE16 (?C?FCAST?T)
 EXTERN CODE16 (?C?FPADD?T)



*** PUBLICS:
 PUBLIC         __atof?T
 PUBLIC         _my_sprintf?T



*** CODE SEGMENT '?PR?__atof?T?my_lib':
   33: double __atof(char *s)
 00000000  B5F0      PUSH        {R4-R7,LR}
 00000002  1C07      MOV         R7,R0 ; s
 00000004  ---- Variable 's' assigned to Register 'R7' ----
 00000004  ---- Variable 'value' assigned to Register 'R5' ----
 00000004  ---- Variable 'sign' assigned to Register 'R4' ----
   34: {
 00000004            ; SCOPE-START
   39:     while(isspace(*s))s++;
 00000004  E000      B           L_1  ; T=0x00000008
 00000006          L_3:
 00000006  3701      ADD         R7,#0x1
 00000008          L_1:
 00000008  1C38      MOV         R0,R7 ; s
 0000000A  7800      LDRB        R0,[R0,#0x0] ; s
 0000000C  F7FF      BL          isspace?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          isspace?T  ; T=0x0001  (2)
 00000010  2800      CMP         R0,#0x0 ; isspace?T
 00000012  D1F8      BNE         L_3  ; T=0x00000006
   42:     if(*s=='-'){
 00000014  1C38      MOV         R0,R7 ; s
 00000016  7801      LDRB        R1,[R0,#0x0] ; s
 00000018  292D      CMP         R1,#0x2D
 0000001A  D102      BNE         L_5  ; T=0x00000022
   43:         sign=1;
 0000001C  2401      MOV         R4,#0x1
   44:         s++;
 0000001E  3701      ADD         R7,#0x1
   45:     }else{
 00000020  E003      B           L_12  ; T=0x0000002A
 00000022          L_5:
   46:         sign=0;
 00000022  2400      MOV         R4,#0x0
   47:         if(*s=='+')s++;
 00000024  292B      CMP         R1,#0x2B
 00000026  D100      BNE         L_12  ; T=0x0000002A
 00000028  3701      ADD         R7,#0x1
   51:     for(value=0.0;isdigit(*s);s++)value=value*10.0+(*s-'0');
 0000002A          L_12:
 0000002A  2500      MOV         R5,#0x0
 0000002C  E00F      B           L_10  ; T=0x0000004E
 0000002E          L_11:
 0000002E  4800      LDR         R1,=0x41200000
 00000030  1C28      MOV         R0,R5 ; value
 00000032  F7FF      BL          ?C?FPMUL?T  ; T=0x0001  (1) ; ?C?FPMUL?T
 00000034  FFE5      BL          ?C?FPMUL?T  ; T=0x0001  (2) ; ?C?FPMUL?T
 00000036  1C02      MOV         R2,R0
 00000038  1C38      MOV         R0,R7 ; s
 0000003A  7800      LDRB        R0,[R0,#0x0] ; s
 0000003C  3830      SUB         R0,#0x30
ARM COMPILER V2.53,  my_lib                                                                23/07/06  16:59:04  PAGE 4   

 0000003E  F7FF      BL          ?C?FCAST?T  ; T=0x0001  (1) ; ?C?FCAST?T
 00000040  FFDF      BL          ?C?FCAST?T  ; T=0x0001  (2) ; ?C?FCAST?T
 00000042  1C01      MOV         R1,R0
 00000044  1C10      MOV         R0,R2
 00000046  F7FF      BL          ?C?FPADD?T  ; T=0x0001  (1) ; ?C?FPADD?T
 00000048  FFDB      BL          ?C?FPADD?T  ; T=0x0001  (2) ; ?C?FPADD?T
 0000004A  1C05      MOV         R5,R0 ; value
 0000004C  3701      ADD         R7,#0x1
 0000004E          L_10:
 0000004E  1C38      MOV         R0,R7 ; s
 00000050  7800      LDRB        R0,[R0,#0x0] ; s
 00000052  F7FF      BL          isdigit?T  ; T=0x0001  (1)
 00000054  FFD5      BL          isdigit?T  ; T=0x0001  (2)
 00000056  2800      CMP         R0,#0x0 ; isdigit?T
 00000058  D1E9      BNE         L_11  ; T=0x0000002E
   53:     if(*s=='.'){
 0000005A  1C38      MOV         R0,R7 ; s
 0000005C  7800      LDRB        R0,[R0,#0x0] ; s
 0000005E  282E      CMP         R0,#0x2E
 00000060  D11B      BNE         L_13  ; T=0x0000009A
   54:         s++;
 00000062  3701      ADD         R7,#0x1
   55:         for(fraction=0.1;isdigit(*s);s++){
 00000064  4800      LDR         R6,=0x3DCCCCCD
 00000066  ---- Variable 'fraction' assigned to Register 'R6' ----
 00000066  E012      B           L_16  ; T=0x0000008E
 00000068          L_17:
   56:             value+=(*s-'0')*fraction;
 00000068  1C38      MOV         R0,R7 ; s
 0000006A  7800      LDRB        R0,[R0,#0x0] ; s
 0000006C  3830      SUB         R0,#0x30
 0000006E  F7FF      BL          ?C?FCAST?T  ; T=0x0001  (1) ; ?C?FCAST?T
 00000070  FFC7      BL          ?C?FCAST?T  ; T=0x0001  (2) ; ?C?FCAST?T
 00000072  1C31      MOV         R1,R6 ; fraction
 00000074  F7FF      BL          ?C?FPMUL?T  ; T=0x0001  (1) ; ?C?FPMUL?T
 00000076  FFC4      BL          ?C?FPMUL?T  ; T=0x0001  (2) ; ?C?FPMUL?T
 00000078  1C01      MOV         R1,R0
 0000007A  1C28      MOV         R0,R5 ; value
 0000007C  F7FF      BL          ?C?FPADD?T  ; T=0x0001  (1) ; ?C?FPADD?T
 0000007E  FFC0      BL          ?C?FPADD?T  ; T=0x0001  (2) ; ?C?FPADD?T
 00000080  1C05      MOV         R5,R0 ; value
   57:             fraction*=0.1;
 00000082  1C30      MOV         R0,R6 ; fraction
 00000084  4800      LDR         R1,=0x3DCCCCCD
 00000086  F7FF      BL          ?C?FPMUL?T  ; T=0x0001  (1) ; ?C?FPMUL?T
 00000088  FFBB      BL          ?C?FPMUL?T  ; T=0x0001  (2) ; ?C?FPMUL?T
 0000008A  1C06      MOV         R6,R0 ; fraction
   58:         }
 0000008C  3701      ADD         R7,#0x1
 0000008E          L_16:
 0000008E  1C38      MOV         R0,R7 ; s
 00000090  7800      LDRB        R0,[R0,#0x0] ; s
 00000092  F7FF      BL          isdigit?T  ; T=0x0001  (1)
 00000094  FFB5      BL          isdigit?T  ; T=0x0001  (2)
 00000096  2800      CMP         R0,#0x0 ; isdigit?T
 00000098  D1E6      BNE         L_17  ; T=0x00000068
   59:     }
 0000009A          L_13:
   63:     if(sign)value*=-1.0;
 0000009A  1C20      MOV         R0,R4 ; sign
 0000009C  2800      CMP         R0,#0x0 ; sign
 0000009E  D004      BEQ         L_19  ; T=0x000000AA
 000000A0  1C28      MOV         R0,R5 ; value
 000000A2  4800      LDR         R1,=0xBF800000
 000000A4  F7FF      BL          ?C?FPMUL?T  ; T=0x0001  (1) ; ?C?FPMUL?T
 000000A6  FFAC      BL          ?C?FPMUL?T  ; T=0x0001  (2) ; ?C?FPMUL?T
ARM COMPILER V2.53,  my_lib                                                                23/07/06  16:59:04  PAGE 5   

 000000A8  1C05      MOV         R5,R0 ; value
 000000AA          L_19:
   64:     return value;
 000000AA  1C28      MOV         R0,R5 ; value
 000000AC            ; SCOPE-END
   65: }
 000000AC  BCF0      POP         {R4-R7}
 000000AE  BC08      POP         {R3}
 000000B0  4718      BX          R3
 000000B2          ENDP ; '__atof?T'


*** CODE SEGMENT '?PR?_my_sprintf?T?my_lib':
   67: int _my_sprintf(char * str,char const *format,...)
 00000000  B40C      PUSH        {R2-R3}
 00000002  B500      PUSH        {LR}
 00000004  1C0A      MOV         R2,R1 ; format
 00000006  ---- Variable 'format' assigned to Register 'R2' ----
 00000006  1C01      MOV         R1,R0 ; str
 00000008  ---- Variable 'str' assigned to Register 'R1' ----
   68: {
 00000008            ; SCOPE-START
   72:     va_start(args,format);
 00000008  AB00      ADD         R3,R13,#0x0
 0000000A  ---- Variable 'args' assigned to Register 'R3' ----
   73:     re=vsprintf(str,format,args);
 0000000A  1C08      MOV         R0,R1 ; str
 0000000C  1C11      MOV         R1,R2 ; format
 0000000E  1C1A      MOV         R2,R3 ; args
 00000010  F7FF      BL          vsprintf?T  ; T=0x0001  (1)
 00000012  FFF6      BL          vsprintf?T  ; T=0x0001  (2)
 00000014  1C01      MOV         R1,R0 ; re
 00000016  ---- Variable 're' assigned to Register 'R1' ----
   75:     return re;
 00000016  1C08      MOV         R0,R1 ; re
 00000018            ; SCOPE-END
 00000018  BC08      POP         {R3}
 0000001A  B002      ADD         R13,#0x8
 0000001C  4718      BX          R3
 0000001E          ENDP ; '_my_sprintf?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =    ------
  const size           =    ------
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -