📄 dhry_2.lst
字号:
109 Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc];
\ 00000010 013082E2 ADD R3,R2,#+0x1
\ 00000014 005094E7 LDR R5,[R4, +R0]
\ 00000018 035180E7 STR R5,[R0, +R3, LSL #+2]
110 Arr_1_Par_Ref [Int_Loc+30] = Int_Loc;
\ 0000001C 1E5082E2 ADD R5,R2,#+0x1E
\ 00000020 052180E7 STR R2,[R0, +R5, LSL #+2]
111 for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index)
\ 00000024 0250A0E1 MOV R5,R2
\ 00000028 C860A0E3 MOV R6,#+0xC8
\ 0000002C 920607E0 MUL R7,R2,R6
\ 00000030 016087E0 ADD R6,R7,R1
\ 00000034 066084E0 ADD R6,R4,R6
\ 00000038 0370A0E1 MOV R7,R3
\ 0000003C 020000EA B ??Proc_8_0
112 Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc;
\ ??Proc_8_1:
\ 00000040 002086E5 STR R2,[R6, #+0]
\ 00000044 015085E2 ADD R5,R5,#+0x1
\ 00000048 046086E2 ADD R6,R6,#+0x4
\ ??Proc_8_0:
\ 0000004C 050057E1 CMP R7,R5
\ 00000050 FAFFFFAA BGE ??Proc_8_1
113 Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1;
\ 00000054 C830A0E3 MOV R3,#+0xC8
\ 00000058 920305E0 MUL R5,R2,R3
\ 0000005C 013085E0 ADD R3,R5,R1
\ 00000060 015042E2 SUB R5,R2,#+0x1
\ 00000064 056193E7 LDR R6,[R3, +R5, LSL #+2]
\ 00000068 016086E2 ADD R6,R6,#+0x1
\ 0000006C 056183E7 STR R6,[R3, +R5, LSL #+2]
114 Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc];
\ 00000070 003094E7 LDR R3,[R4, +R0]
\ 00000074 140082E2 ADD R0,R2,#+0x14
\ 00000078 C820A0E3 MOV R2,#+0xC8
\ 0000007C 900205E0 MUL R5,R0,R2
\ 00000080 010085E0 ADD R0,R5,R1
\ 00000084 003084E7 STR R3,[R4, +R0]
115 Int_Glob = 5;
\ 00000088 0500A0E3 MOV R0,#+0x5
\ 0000008C 08109FE5 LDR R1,??Proc_8_2 ;; #Int_Glob
\ 00000090 000081E5 STR R0,[R1, #+0]
116 } /* Proc_8 */
\ 00000094 F000BDE8 LDMIA SP!,{R4-R7} ;; Pop
\ 00000098 0EF0A0E1 MOV PC,LR ;; return
\ 0000009C DATA
\ ??Proc_8_2:
\ 0000009C ........ DC32 Int_Glob
117
118
\ In segment NEARFUNC_A, align 4
\ 00000000 CODE32
119 Enumeration Func_1 (Capital_Letter Ch_1_Par_Val, Capital_Letter Ch_2_Par_Val)
120 /*************************************************/
121 /* executed three times */
122 /* first call: Ch_1_Par_Val == 'H', Ch_2_Par_Val == 'R' */
123 /* second call: Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C' */
124 /* third call: Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C' */
125 {
126 Capital_Letter Ch_1_Loc;
127 Capital_Letter Ch_2_Loc;
128
129 Ch_1_Loc = Ch_1_Par_Val;
130 Ch_2_Loc = Ch_1_Loc;
131 if (Ch_2_Loc != Ch_2_Par_Val)
\ Func_1:
\ 00000000 FF2000E2 AND R2,R0,#+0xFF ;; Zero extend
\ 00000004 FF1001E2 AND R1,R1,#+0xFF ;; Zero extend
\ 00000008 010052E1 CMP R2,R1
132 /* then, executed */
133 return (Ident_1);
\ 0000000C 0000A013 MOVNE R0,#+0x0
134 else /* not executed */
135 {
136 Ch_1_Glob = Ch_1_Loc;
\ 00000010 0C009F05 LDREQ R0,??Func_1_0 ;; #Ch_1_Glob
\ 00000014 0020C005 STREQB R2,[R0, #+0]
137 return (Ident_2);
\ 00000018 0100A003 MOVEQ R0,#+0x1
\ 0000001C FF0000E2 AND R0,R0,#+0xFF ;; Zero extend
\ 00000020 0EF0A0E1 MOV PC,LR ;; return
\ 00000024 DATA
\ ??Func_1_0:
\ 00000024 ........ DC32 Ch_1_Glob
138 }
139 } /* Func_1 */
140
141
\ In segment NEARFUNC_A, align 4, keep-with-next
\ 00000000 CODE32
142 Boolean Func_2 (Str_30 Str_1_Par_Ref, Str_30 Str_2_Par_Ref)
143 /*************************************************/
144 /* executed once */
145 /* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */
146 /* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */
147
148 {
\ Func_2:
\ 00000000 30002DE9 STMDB SP!,{R4,R5} ;; Push
149 REG One_Thirty Int_Loc;
150 Capital_Letter Ch_Loc;
151
152 Int_Loc = 2;
\ 00000004 0220A0E3 MOV R2,#+0x2
\ 00000008 020000EA B ??Func_2_0
153 while (Int_Loc <= 2) /* loop body executed once */
154 if (Func_1 (Str_1_Par_Ref[Int_Loc],
155 Str_2_Par_Ref[Int_Loc+1]) == Ident_1)
156 /* then, executed */
157 {
158 Ch_Loc = 'A';
159 Int_Loc += 1;
\ ??Func_2_1:
\ 0000000C 012082E2 ADD R2,R2,#+0x1
160 } /* if, while */
\ 00000010 030052E3 CMP R2,#+0x3
\ 00000014 070000AA BGE ??Func_2_2
\ ??Func_2_0:
\ 00000018 0030D2E7 LDRB R3,[R2, +R0]
\ 0000001C 014082E2 ADD R4,R2,#+0x1
\ 00000020 0150D4E7 LDRB R5,[R4, +R1]
\ 00000024 050053E1 CMP R3,R5
\ 00000028 F7FFFF1A BNE ??Func_2_1
\ 0000002C 50409FE5 LDR R4,??Func_2_3 ;; #Ch_1_Glob
\ 00000030 0030C4E5 STRB R3,[R4, #+0]
\ 00000034 F7FFFFEA B ??Func_2_0
161
162 if (Ch_Loc >= 'W' && Ch_Loc < 'Z')
163 /* then, not executed */
164 Int_Loc = 7;
165 if (Ch_Loc == 'R')
166 /* then, not executed */
167 return (true);
168 else /* executed */
169 {
170 if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0)
\ ??Func_2_2:
\ 00000038 ........ LDRB R4,[R1], #+1
\ 0000003C ........ LDRB R3,[R0], #+1
\ 00000040 040053E1 CMP R3,R4
\ 00000044 0300001A BNE ??Func_2_4
\ 00000048 000053E3 CMP R3,#+0x0
\ 0000004C F9FFFF1A BNE ??Func_2_2
\ 00000050 0050A0E3 MOV R5,#+0x0
\ 00000054 000000EA B ??Func_2_5
\ ??Func_2_4:
\ 00000058 045043E0 SUB R5,R3,R4
\ ??Func_2_5:
\ 0000005C 010055E3 CMP R5,#+0x1
\ 00000060 040000BA BLT ??Func_2_6
171 /* then, not executed */
172 {
173 Int_Loc += 7;
174 Int_Glob = Int_Loc;
\ 00000064 070082E2 ADD R0,R2,#+0x7
\ 00000068 18109FE5 LDR R1,??Func_2_3+4 ;; #Int_Glob
\ 0000006C 000081E5 STR R0,[R1, #+0]
175 return (true);
\ 00000070 0100A0E3 MOV R0,#+0x1
\ 00000074 000000EA B ??Func_2_7
176 }
177 else /* executed */
178 return (false);
\ ??Func_2_6:
\ 00000078 0000A0E3 MOV R0,#+0x0
\ ??Func_2_7:
\ 0000007C 3000BDE8 LDMIA SP!,{R4,R5} ;; Pop
\ 00000080 0EF0A0E1 MOV PC,LR ;; return
\ 00000084 DATA
\ ??Func_2_3:
\ 00000084 ........ DC32 Ch_1_Glob
\ 00000088 ........ DC32 Int_Glob
179 } /* if Ch_Loc */
180 } /* Func_2 */
181
182
183
Maximum stack usage in bytes:
Function CSTACK
-------- ------
Func_1 0
Func_2 8
Func_3 0
Proc_6 4
Proc_7 0
Proc_8 16
500 bytes in segment NEARFUNC_A
500 bytes of CODE memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -