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

📄 dhry_1.lst

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 LST
📖 第 1 页 / 共 3 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/EC++ Compiler V3.10A/W32              05/Nov/2001  14:53:16 #
# Copyright 1999-2001 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Cpu mode     =  arm                                                     #
#    Code model   =  small                                                   #
#    Endian       =  little                                                  #
#    Source file  =  C:\At91\software\projects\bench\Source\dhry_1.c         #
#    Command line =  -I C:\Compil\EW23\ARM\INC\ -I ..\..\..\ -lC             #
#                    C:\At91\software\projects\bench\IAR\ARM_external\List\  #
#                    -lA C:\At91\software\projects\bench\IAR\ARM_external\Li #
#                    st\ -o C:\At91\software\projects\bench\IAR\ARM_external #
#                    \Obj\ -e -s9 --debug --cpu_mode arm --code_model small  #
#                    --endian little --cpu=arm7tdmi                          #
#                    C:\At91\software\projects\bench\Source\dhry_1.c         #
#    List file    =  C:\At91\software\projects\bench\IAR\ARM_external\List\d #
#                    hry_1.lst                                               #
#    Object file  =  C:\At91\software\projects\bench\IAR\ARM_external\Obj\dh #
#                    ry_1.r79                                                #
#                                                                            #
#                                                                            #
##############################################################################

C:\At91\software\projects\bench\Source\dhry_1.c
      1          /*
      2           ****************************************************************************
      3           *
      4           *                   "DHRYSTONE" Benchmark Program
      5           *                   -----------------------------
      6           *
      7           *  Version:    C, Version 2.1
      8           *
      9           *  File:       dhry_1.c (part 2 of 3)
     10           *
     11           *  Date:       May 25, 1988
     12           *
     13           *  Author:     Reinhold P. Weicker
     14           *
     15           ****************************************************************************
     16           */
     17          
     18          #include <string.h>
     19          #include <stdlib.h>
     20          #include "dhry.h"
     21          
     22          
     23          /* Global Variables: */
     24          

   \                                 In segment HUGE_Z, align 4, align-sorted
     25          Rec_Pointer     Ptr_Glob,
     26                          Next_Ptr_Glob;
     27          int             Int_Glob;
     28          Boolean         Bool_Glob;
     29          char            Ch_1_Glob,
     30                          Ch_2_Glob;
     31          int             Arr_1_Glob [50];
   \                     Arr_1_Glob:
   \   00000000                              DS8 200
   \                     Ch_1_Glob:
   \   000000C8                              DS8 1
   \                     Ch_2_Glob:
   \   000000C9                              DS8 1
   \   000000CA                              DS8 2
   \                     Bool_Glob:
   \   000000CC                              DS8 4
   \                     Int_Glob:
   \   000000D0                              DS8 4
   \                     Next_Ptr_Glob:
   \   000000D4                              DS8 4
   \                     Ptr_Glob:
   \   000000D8                              DS8 4

   \                                 In segment HUGE_Z, align 4, align-sorted
     32          int             Arr_2_Glob [50] [50];
   \                     Arr_2_Glob:
   \   00000000                              DS8 10000
     33          
     34          //extern char     *malloc (int i );
     35          extern Enumeration Func_1 (Capital_Letter Ch_1_Par_Val, Capital_Letter Ch_2_Par_Val);
     36          extern Boolean Func_2 (Str_30  Str_1_Par_Ref, Str_30  Str_2_Par_Ref) ;
     37            /* forward declaration necessary since Enumeration may not simply be int */
     38          extern Boolean Func_3 (Enumeration Enum_Par_Val);
     39          extern void Proc_6 ( Enumeration Enum_Val_Par, Enumeration *Enum_Ref_Par) ;
     40          extern void Proc_7 ( One_Fifty Int_1_Par_Val,
     41                        One_Fifty Int_2_Par_Val,
     42                        One_Fifty *Int_Par_Ref ) ;
     43          extern void Proc_8 ( Arr_1_Dim Arr_1_Par_Ref,
     44                        Arr_2_Dim Arr_2_Par_Ref,
     45                        int Int_1_Par_Val,
     46                        int Int_2_Par_Val) ;
     47          void Proc_1 (Rec_Pointer Ptr_Val_Par) ;
     48          void Proc_2 (One_Fifty *Int_Par_Ref) ;
     49          void Proc_3 (Rec_Pointer *Ptr_Ref_Par) ;
     50          void Proc_4 ( void ) ;
     51          void Proc_5 ( void ) ;
     52          
     53          
     54          #ifndef REG

   \                                 In segment HUGE_Z, align 4, align-sorted
     55                  Boolean Reg = false;
   \                     Reg:
   \   00000000                              DS8 4
     56          #define REG
     57                  /* REG becomes defined as empty */
     58                  /* i.e. no register variables   */
     59          #else
     60                  Boolean Reg = true;
     61          #endif
     62          
     63          /* variables for time measurement: */

   \                                 In segment HUGE_Z, align 4, align-sorted
     64          long            Begin_Time,
   \                     Begin_Time:
   \   00000000                              DS8 4

   \                                 In segment HUGE_Z, align 4, align-sorted
     65                          End_Time,
   \                     End_Time:
   \   00000000                              DS8 4

   \                                 In segment HUGE_Z, align 4, align-sorted
     66                          User_Time;
   \                     User_Time:
   \   00000000                              DS8 4

   \                                 In segment HUGE_Z, align 4, align-sorted
     67          float           Microseconds,
   \                     Microseconds:
   \   00000000                              DS8 4

   \                                 In segment HUGE_Z, align 4, align-sorted
     68                          Dhrystones_Per_Second;
   \                     Dhrystones_Per_Second:
   \   00000000                              DS8 4
     69          
     70          /* end of variables for time measurement */
     71          
     72          

   \                                 In segment NEARFUNC_A, align 4, keep-with-next
   \   00000000                         CODE32   
     73          void Proc_1 (Rec_Pointer Ptr_Val_Par)
     74          /******************/
     75          
     76              /* executed once */
     77          {
   \                     Proc_1:
   \   00000000   70402DE9              STMDB    SP!,{R4-R6,LR}     ;; Push
   \   00000004   0040A0E1              MOV      R4,R0
     78              REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp;
   \   00000008   000094E5              LDR      R0,[R4, #+0]
   \   0000000C   0050A0E1              MOV      R5,R0
     79                                                  /* == Ptr_Glob_Next */
     80              /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp,    */
     81              /* corresponds to "rename" in Ada, "with" in Pascal           */
     82          
     83              structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
   \   00000010   AC609FE5              LDR      R6,??Proc_1_0      ;; #Arr_1_Glob
   \   00000014   D81096E5              LDR      R1,[R6, #+216]
   \   00000018   3030A0E3              MOV      R3,#+0x30
   \                     ??Proc_1_1:
   \   0000001C   043053E2              SUBS     R3,R3,#+0x4
   \   00000020   032091E7              LDR      R2,[R1, R3]
   \   00000024   032080E7              STR      R2,[R0, R3]
   \   00000028   FBFFFF1A              BNE      ??Proc_1_1
     84              Ptr_Val_Par->variant.var_1.Int_Comp = 5;
   \   0000002C   0500A0E3              MOV      R0,#+0x5
   \   00000030   0C0084E5              STR      R0,[R4, #+12]
     85              Next_Record->variant.var_1.Int_Comp = Ptr_Val_Par->variant.var_1.Int_Comp;
   \   00000034   0C0085E5              STR      R0,[R5, #+12]
     86              Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp;
   \   00000038   000094E5              LDR      R0,[R4, #+0]
   \   0000003C   000085E5              STR      R0,[R5, #+0]
     87              Proc_3 (&Next_Record->Ptr_Comp);
   \   00000040   0500A0E1              MOV      R0,R5
     88              /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp == Ptr_Glob->Ptr_Comp */
     89              if (Next_Record->Discr == Ident_1)
     90              {
     91                  Next_Record->variant.var_1.Int_Comp = 6;
     92                  Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp,
     93                          &Next_Record->variant.var_1.Enum_Comp);
     94                  Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp;
     95                  Proc_7 (Next_Record->variant.var_1.Int_Comp, 10,
     96                          &Next_Record->variant.var_1.Int_Comp);
     97              }
     98              else
     99                  structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp);
    100          } /* Proc_1 */
    101          
    102          
    103          void Proc_2 (One_Fifty *Int_Par_Ref)
    104          /******************/
    105              /* executed once */
    106              /* *Int_Par_Ref == 1, becomes 4 */
    107          
    108          {
    109              One_Fifty  Int_Loc;
    110              Enumeration   Enum_Loc;
    111          
    112              Int_Loc = *Int_Par_Ref + 10;
    113              do /* executed once */
    114                  if (Ch_1_Glob == 'A')
    115                  {
    116                      Int_Loc -= 1;
    117                      *Int_Par_Ref = Int_Loc - Int_Glob;
    118                      Enum_Loc = Ident_1;
    119                  }
    120              while (Enum_Loc != Ident_1); /* true */
    121          } /* Proc_2 */
    122          

⌨️ 快捷键说明

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