📄 dhry_2.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/EC++ Compiler V3.10A/W32 05/Nov/2001 14:53:17 #
# 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_2.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_2.c #
# List file = C:\At91\software\projects\bench\IAR\ARM_external\List\d #
# hry_2.lst #
# Object file = C:\At91\software\projects\bench\IAR\ARM_external\Obj\dh #
# ry_2.r79 #
# #
# #
##############################################################################
C:\At91\software\projects\bench\Source\dhry_2.c
1 /*
2 ****************************************************************************
3 *
4 * "DHRYSTONE" Benchmark Program
5 * -----------------------------
6 *
7 * Version: C, Version 2.1
8 *
9 * File: dhry_2.c (part 3 of 3)
10 *
11 * Date: May 25, 1988
12 *
13 * Author: Reinhold P. Weicker
14 *
15 ****************************************************************************
16 */
17
18 #include "dhry.h"
19 #include <string.h>
20
21 #ifndef REG
22 #define REG
23 /* REG becomes defined as empty */
24 /* i.e. no register variables */
25 #endif
26
27 extern int Int_Glob;
28 extern char Ch_1_Glob;
29
\ In segment NEARFUNC_A, align 4
\ 00000000 CODE32
30 Boolean Func_3 (Enumeration Enum_Par_Val)
31 /***************************/
32 /* executed once */
33 /* Enum_Par_Val == Ident_3 */
34 {
35 Enumeration Enum_Loc;
36
37 Enum_Loc = Enum_Par_Val;
38 if (Enum_Loc == Ident_3)
\ Func_3:
\ 00000000 FF0000E2 AND R0,R0,#+0xFF ;; Zero extend
\ 00000004 020050E3 CMP R0,#+0x2
39 return (true);
\ 00000008 0100A003 MOVEQ R0,#+0x1
\ 0000000C 0EF0A001 MOVEQ PC,LR ;; return
40 else /* not executed */
41 return (false);
\ 00000010 0000A0E3 MOV R0,#+0x0
\ 00000014 0EF0A0E1 MOV PC,LR ;; return
42 } /* Func_3 */
43
\ In segment NEARFUNC_A, align 4, keep-with-next
\ 00000000 CODE32
44 void Proc_6 ( Enumeration Enum_Val_Par, Enumeration *Enum_Ref_Par)
45 /*********************************/
46 /* executed once */
47 /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */
48 {
\ Proc_6:
\ 00000000 00402DE9 STMDB SP!,{LR} ;; Push
49 *Enum_Ref_Par = Enum_Val_Par;
\ 00000004 0000C1E5 STRB R0,[R1, #+0]
50 if (! Func_3 (Enum_Val_Par))
\ 00000008 FF0000E2 AND R0,R0,#+0xFF ;; Zero extend
\ 0000000C 020050E3 CMP R0,#+0x2
51 /* then, not executed */
52 *Enum_Ref_Par = Ident_4;
\ 00000010 0320A013 MOVNE R2,#+0x3
\ 00000014 0020C115 STRNEB R2,[R1, #+0]
53 switch (Enum_Val_Par)
\ 00000018 000050E3 CMP R0,#+0x0
\ 0000001C 0600000A BEQ ??Proc_6_0
\ 00000020 010050E3 CMP R0,#+0x1
\ 00000024 0600000A BEQ ??Proc_6_1
\ 00000028 020050E3 CMP R0,#+0x2
\ 0000002C 0B00000A BEQ ??Proc_6_2
\ 00000030 040050E3 CMP R0,#+0x4
\ 00000034 0B00000A BEQ ??Proc_6_3
54 {
55 case Ident_1:
56 *Enum_Ref_Par = Ident_1;
57 break;
58 case Ident_2:
59 if (Int_Glob > 100)
60 *Enum_Ref_Par = Ident_1;
61 else
62 *Enum_Ref_Par = Ident_4;
63 break;
64 case Ident_3: /* executed */
65 *Enum_Ref_Par = Ident_2;
66 break;
67 case Ident_4:
68 break;
69 case Ident_5:
70 *Enum_Ref_Par = Ident_3;
71 break;
72 } /* switch */
73 } /* Proc_6 */
\ 00000038 0080BDE8 LDMIA SP!,{PC} ;; return
\ ??Proc_6_0:
\ 0000003C 0000A0E3 MOV R0,#+0x0
\ 00000040 090000EA B ??Proc_6_4
\ ??Proc_6_1:
\ 00000044 28009FE5 LDR R0,??Proc_6_5 ;; #Int_Glob
\ 00000048 002090E5 LDR R2,[R0, #+0]
\ 0000004C 650052E3 CMP R2,#+0x65
\ 00000050 0000A0A3 MOVGE R0,#+0x0
\ 00000054 040000AA BGE ??Proc_6_4
\ 00000058 0300A0E3 MOV R0,#+0x3
\ 0000005C 020000EA B ??Proc_6_4
\ ??Proc_6_2:
\ 00000060 0100A0E3 MOV R0,#+0x1
\ 00000064 000000EA B ??Proc_6_4
\ ??Proc_6_3:
\ 00000068 0200A0E3 MOV R0,#+0x2
\ ??Proc_6_4:
\ 0000006C 0000C1E5 STRB R0,[R1, #+0]
\ 00000070 0080BDE8 LDMIA SP!,{PC} ;; return
\ 00000074 DATA
\ ??Proc_6_5:
\ 00000074 ........ DC32 Int_Glob
74
75
\ In segment NEARFUNC_A, align 4
\ 00000000 CODE32
76 void Proc_7 ( One_Fifty Int_1_Par_Val,
77 One_Fifty Int_2_Par_Val,
78 One_Fifty *Int_Par_Ref )
79 /**********************************************/
80 /* executed three times */
81 /* first call: Int_1_Par_Val == 2, Int_2_Par_Val == 3, */
82 /* Int_Par_Ref becomes 7 */
83 /* second call: Int_1_Par_Val == 10, Int_2_Par_Val == 5, */
84 /* Int_Par_Ref becomes 17 */
85 /* third call: Int_1_Par_Val == 6, Int_2_Par_Val == 10, */
86 /* Int_Par_Ref becomes 18 */
87 {
88 One_Fifty Int_Loc;
89
90 Int_Loc = Int_1_Par_Val + 2;
91 *Int_Par_Ref = Int_2_Par_Val + Int_Loc;
\ Proc_7:
\ 00000000 010080E0 ADD R0,R0,R1
\ 00000004 020080E2 ADD R0,R0,#+0x2
\ 00000008 000082E5 STR R0,[R2, #+0]
92 } /* Proc_7 */
\ 0000000C 0EF0A0E1 MOV PC,LR ;; return
93
94
\ In segment NEARFUNC_A, align 4, keep-with-next
\ 00000000 CODE32
95 void Proc_8 ( Arr_1_Dim Arr_1_Par_Ref,
96 Arr_2_Dim Arr_2_Par_Ref,
97 int Int_1_Par_Val,
98 int Int_2_Par_Val)
99 /*********************************************************************/
100 /* executed once */
101 /* Int_Par_Val_1 == 3 */
102 /* Int_Par_Val_2 == 7 */
103 {
\ Proc_8:
\ 00000000 F0002DE9 STMDB SP!,{R4-R7} ;; Push
104 REG One_Fifty Int_Index;
105 REG One_Fifty Int_Loc;
106
107 Int_Loc = Int_1_Par_Val + 5;
\ 00000004 052082E2 ADD R2,R2,#+0x5
108 Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val;
\ 00000008 0241A0E1 MOV R4,R2, LSL #+2
\ 0000000C 003084E7 STR R3,[R4, +R0]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -