📄 dhry_1.lst
字号:
##############################################################################
# #
# 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 + -