📄 pwr_c.txt
字号:
000aa0 e8bd80f8 LDMFD sp!,{r3-r7,pc}
|L1.2724|
000aa4 e1a01007 MOV r1,r7 ;838
000aa8 e1a00006 MOV r0,r6 ;838
000aac ebfffffe BL strcmp ;838
000ab0 e3500000 CMP r0,#0 ;838
000ab4 da000004 BLE |L1.2764| ;838
000ab8 e2844007 ADD r4,r4,#7 ;841
000abc e59f0290 LDR r0,|L1.3412| ;842
000ac0 e5804000 STR r4,[r0,#0] ;842 ; Int_Glob
000ac4 e3a00001 MOV r0,#1 ;843
000ac8 eafffff4 B |L1.2720| ;843
|L1.2764|
000acc e3a00000 MOV r0,#0 ;846
000ad0 eafffff2 B |L1.2720| ;846
ENDP
Proc_4 PROC
;;;645 /* executed once */
;;;646 {
000ad4 e59f1274 LDR r1,|L1.3408|
;;;647 Boolean Bool_Loc;
;;;648
;;;649 Bool_Loc = Ch_1_Glob == 'A';
000ad8 e5d11000 LDRB r1,[r1,#0] ; Ch_1_Glob
000adc e3510041 CMP r1,#0x41
000ae0 1a000001 BNE |L1.2796|
000ae4 e3a01001 MOV r1,#1
000ae8 ea000000 B |L1.2800|
|L1.2796|
000aec e3a01000 MOV r1,#0
|L1.2800|
000af0 e1a00001 MOV r0,r1
;;;650 Bool_Glob = Bool_Loc | Bool_Glob;
000af4 e59f1260 LDR r1,|L1.3420|
000af8 e5911000 LDR r1,[r1,#0] ; Bool_Glob
000afc e1801001 ORR r1,r0,r1
000b00 e59f2254 LDR r2,|L1.3420|
000b04 e5821000 STR r1,[r2,#0] ; Bool_Glob
;;;651 Ch_2_Glob = 'B';
000b08 e3a01042 MOV r1,#0x42
000b0c e59f224c LDR r2,|L1.3424|
000b10 e5c21000 STRB r1,[r2,#0] ; Ch_2_Glob
;;;652 } /* Proc_4 */
000b14 e12fff1e BX lr
ENDP
Proc_5 PROC
;;;657 /* executed once */
;;;658 {
000b18 e3a00041 MOV r0,#0x41
;;;659 Ch_1_Glob = 'A';
000b1c e59f122c LDR r1,|L1.3408|
000b20 e5c10000 STRB r0,[r1,#0] ; Ch_1_Glob
;;;660 Bool_Glob = false;
000b24 e3a00000 MOV r0,#0
000b28 e59f122c LDR r1,|L1.3420|
000b2c e5810000 STR r0,[r1,#0] ; Bool_Glob
;;;661 } /* Proc_5 */
000b30 e12fff1e BX lr
ENDP
dhrystone21 PROC
;;;491 /* Main and Proc_0 in the Ada version */
;;;492 {
000b34 e92d40f0 STMFD sp!,{r4-r7,lr}
000b38 e24dd04c SUB sp,sp,#0x4c
;;;493 One_Fifty Int_1_Loc;
;;;494 REG One_Fifty Int_2_Loc;
;;;495 One_Fifty Int_3_Loc;
;;;496 REG char Ch_Index;
;;;497 Enumeration Enum_Loc;
;;;498 Str_30 Str_1_Loc;
;;;499 Str_30 Str_2_Loc;
;;;500 REG int Run_Index;
;;;501 REG int Number_Of_Runs;
;;;502
;;;503 /* Initializations */
;;;504
;;;505 Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
000b3c e3a00030 MOV r0,#0x30
000b40 ebfffffe BL malloc
000b44 e59f1218 LDR r1,|L1.3428|
000b48 e5810000 STR r0,[r1,#0] ; Next_Ptr_Glob
;;;506 Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
000b4c e3a00030 MOV r0,#0x30
000b50 ebfffffe BL malloc
000b54 e59f11fc LDR r1,|L1.3416|
000b58 e5810000 STR r0,[r1,#0] ; Ptr_Glob
;;;507
;;;508 Ptr_Glob->Ptr_Comp = Next_Ptr_Glob;
000b5c e59f0200 LDR r0,|L1.3428|
000b60 e5900000 LDR r0,[r0,#0] ; Next_Ptr_Glob
000b64 e59f11ec LDR r1,|L1.3416|
000b68 e5911000 LDR r1,[r1,#0] ; Ptr_Glob
000b6c e5810000 STR r0,[r1,#0]
;;;509 Ptr_Glob->Discr = Ident_1;
000b70 e3a00000 MOV r0,#0
000b74 e59f11dc LDR r1,|L1.3416|
000b78 e5911000 LDR r1,[r1,#0] ; Ptr_Glob
000b7c e5c10004 STRB r0,[r1,#4]
;;;510 Ptr_Glob->variant.var_1.Enum_Comp = Ident_3;
000b80 e3a00002 MOV r0,#2
000b84 e59f11cc LDR r1,|L1.3416|
000b88 e5911000 LDR r1,[r1,#0] ; Ptr_Glob
000b8c e5c10008 STRB r0,[r1,#8]
;;;511 Ptr_Glob->variant.var_1.Int_Comp = 40;
000b90 e3a00028 MOV r0,#0x28
000b94 e59f11bc LDR r1,|L1.3416|
000b98 e5911000 LDR r1,[r1,#0] ; Ptr_Glob
000b9c e581000c STR r0,[r1,#0xc]
;;;512 strcpy (Ptr_Glob->variant.var_1.Str_Comp,
000ba0 e3a0201f MOV r2,#0x1f
000ba4 e28f1f6f ADR r1,|L1.3432|
000ba8 e59f01a8 LDR r0,|L1.3416|
000bac e5900000 LDR r0,[r0,#0] ; Ptr_Glob
000bb0 e2800010 ADD r0,r0,#0x10
000bb4 ebfffffe BL __rt_memcpy_w
;;;513 "DHRYSTONE PROGRAM, SOME STRING");
;;;514 strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
000bb8 e3a02020 MOV r2,#0x20
000bbc e28f1f71 ADR r1,|L1.3464|
000bc0 e08d0002 ADD r0,sp,r2
000bc4 ebfffffe BL __rt_memcpy_w
;;;515
;;;516 Arr_2_Glob [8][7] = 10;
000bc8 e3a0000a MOV r0,#0xa
000bcc e59f11d4 LDR r1,|L1.3496|
000bd0 e581065c STR r0,[r1,#0x65c] ; Arr_2_Glob
;;;517 /* Was missing in published program. Without this statement, */
;;;518 /* Arr_2_Glob [8][7] would have an undefined value. */
;;;519 /* Warning: With 16-Bit processors and Number_Of_Runs > 32000, */
;;;520 /* overflow may occur for this array element. */
;;;521
;;;522 Number_Of_Runs = 10000;
000bd4 e59f71d0 LDR r7,|L1.3500|
;;;523
;;;524 for (Run_Index = 1; Run_Index <= Number_Of_Runs; ++Run_Index)
000bd8 e3a05001 MOV r5,#1
|L1.3036|
000bdc e1550007 CMP r5,r7
000be0 ca000058 BGT |L1.3400|
000be4 ea000001 B |L1.3056|
|L1.3048|
000be8 e2855001 ADD r5,r5,#1
000bec eafffffa B |L1.3036|
;;;525 {
;;;526
;;;527 Proc_5();
|L1.3056|
000bf0 ebfffffe BL Proc_5
;;;528 Proc_4();
000bf4 ebfffffe BL Proc_4
;;;529 /* Ch_1_Glob == 'A', Ch_2_Glob == 'B', Bool_Glob == true */
;;;530 Int_1_Loc = 2;
000bf8 e3a00002 MOV r0,#2
000bfc e58d0048 STR r0,[sp,#0x48]
;;;531 Int_2_Loc = 3;
000c00 e3a04003 MOV r4,#3
;;;532 strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING");
000c04 e3a02020 MOV r2,#0x20
000c08 e28f1f68 ADR r1,|L1.3504|
000c0c e1a0000d MOV r0,sp
000c10 ebfffffe BL __rt_memcpy_w
;;;533 Enum_Loc = Ident_2;
000c14 e3a00001 MOV r0,#1
000c18 e5cd0040 STRB r0,[sp,#0x40]
;;;534 Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc);
000c1c e1a0100d MOV r1,sp
000c20 e28d0020 ADD r0,sp,#0x20
000c24 ebfffffe BL Func_2
000c28 e3500000 CMP r0,#0
000c2c 1a000001 BNE |L1.3128|
000c30 e3a00001 MOV r0,#1
000c34 ea000000 B |L1.3132|
|L1.3128|
000c38 e3a00000 MOV r0,#0
|L1.3132|
000c3c e59f1118 LDR r1,|L1.3420|
000c40 e5810000 STR r0,[r1,#0] ; Bool_Glob
;;;535 /* Bool_Glob == 1 */
;;;536 while (Int_1_Loc < Int_2_Loc) /* loop body executed once */
000c44 e1a00000 NOP
|L1.3144|
000c48 e59d0048 LDR r0,[sp,#0x48]
000c4c e1500004 CMP r0,r4
000c50 aa00000b BGE |L1.3204|
;;;537 {
;;;538 Int_3_Loc = 5 * Int_1_Loc - Int_2_Loc;
000c54 e59d0048 LDR r0,[sp,#0x48]
000c58 e0800100 ADD r0,r0,r0,LSL #2
000c5c e0400004 SUB r0,r0,r4
000c60 e58d0044 STR r0,[sp,#0x44]
;;;539 /* Int_3_Loc == 7 */
;;;540 Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc);
000c64 e28d2044 ADD r2,sp,#0x44
000c68 e1a01004 MOV r1,r4
000c6c e59d0048 LDR r0,[sp,#0x48]
000c70 ebfffffe BL Proc_7
;;;541 /* Int_3_Loc == 7 */
;;;542 Int_1_Loc += 1;
000c74 e59d0048 LDR r0,[sp,#0x48]
000c78 e2800001 ADD r0,r0,#1
000c7c e58d0048 STR r0,[sp,#0x48]
;;;543 } /* while */
000c80 eafffff0 B |L1.3144|
;;;544 /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
;;;545 Proc_8 (Arr_1_Glob, Arr_2_Glob, Int_1_Loc, Int_3_Loc);
|L1.3204|
000c84 e59f111c LDR r1,|L1.3496|
000c88 e59f0140 LDR r0,|L1.3536|
000c8c e59d2048 LDR r2,[sp,#0x48]
000c90 e59d3044 LDR r3,[sp,#0x44]
000c94 ebfffffe BL Proc_8
;;;546 /* Int_Glob == 5 */
;;;547 Proc_1 (Ptr_Glob);
000c98 e59f00b8 LDR r0,|L1.3416|
000c9c e5900000 LDR r0,[r0,#0] ; Ptr_Glob
000ca0 ebfffffe BL Proc_1
;;;548 for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index)
000ca4 e3a06041 MOV r6,#0x41
|L1.3240|
000ca8 e59f00b0 LDR r0,|L1.3424|
000cac e5d00000 LDRB r0,[r0,#0] ; Ch_2_Glob
000cb0 e1560000 CMP r6,r0
000cb4 8a000015 BHI |L1.3344|
000cb8 ea000002 B |L1.3272|
|L1.3260|
000cbc e2860001 ADD r0,r6,#1
000cc0 e20060ff AND r6,r0,#0xff
000cc4 eafffff7 B |L1.3240|
;;;549 /* loop body executed twice */
;;;550 {
;;;551 if (Enum_Loc == Func_1 (Ch_Index, 'C'))
|L1.3272|
000cc8 e3a01043 MOV r1,#0x43
000ccc e1a00006 MOV r0,r6
000cd0 ebfffffe BL Func_1
000cd4 e5dd1040 LDRB r1,[sp,#0x40]
000cd8 e1500001 CMP r0,r1
000cdc 1a00000a BNE |L1.3340|
;;;552 /* then, not executed */
;;;553 {
;;;554 Proc_6 (Ident_1, &Enum_Loc);
000ce0 e28d1040 ADD r1,sp,#0x40
000ce4 e3a00000 MOV r0,#0
000ce8 ebfffffe BL Proc_6
;;;555 strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING");
000cec e3a02020 MOV r2,#0x20
000cf0 e28f10dc ADR r1,|L1.3540|
000cf4 e1a0000d MOV r0,sp
000cf8 ebfffffe BL __rt_memcpy_w
;;;556 Int_2_Loc = Run_Index;
000cfc e1a04005 MOV r4,r5
;;;557 Int_Glob = Run_Index;
000d00 e1a04005 MOV r4,r5
000d04 e59f0048 LDR r0,|L1.3412|
000d08 e5805000 STR r5,[r0,#0] ; Int_Glob
;;;558 }
;;;559 }
|L1.3340|
000d0c eaffffea B |L1.3260|
;;;560 /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
;;;561 Int_2_Loc = Int_2_Loc * Int_1_Loc;
|L1.3344|
000d10 e59d1048 LDR r1,[sp,#0x48]
000d14 e0040491 MUL r4,r1,r4
;;;562 Int_1_Loc = Int_2_Loc / Int_3_Loc;
000d18 e1a01004 MOV r1,r4
000d1c e59d0044 LDR r0,[sp,#0x44]
000d20 ebfffffe BL __rt_sdiv
000d24 e58d0048 STR r0,[sp,#0x48]
;;;563 Int_2_Loc = 7 * (Int_2_Loc - Int_3_Loc) - Int_1_Loc;
000d28 e59d0044 LDR r0,[sp,#0x44]
000d2c e0440000 SUB r0,r4,r0
000d30 e0600180 RSB r0,r0,r0,LSL #3
000d34 e59d1048 LDR r1,[sp,#0x48]
000d38 e0404001 SUB r4,r0,r1
;;;564 /* Int_1_Loc == 1, Int_2_Loc == 13, Int_3_Loc == 7 */
;;;565 Proc_2 (&Int_1_Loc);
000d3c e28d0048 ADD r0,sp,#0x48
000d40 ebfffffe BL Proc_2
;;;566 /* Int_1_Loc == 5 */
;;;567 } /* loop "for Run_Index" */
000d44 eaffffa7 B |L1.3048|
;;;568 }
|L1.3400|
000d48 e28dd04c ADD sp,sp,#0x4c
000d4c e8bd80f0 LDMFD sp!,{r4-r7,pc}
|L1.3408|
000d50 00044014 DCD ||.bss$2|| + 278548
|L1.3412|
000d54 0004400c DCD ||.bss$2|| + 278540
|L1.3416|
000d58 00044004 DCD ||.bss$2|| + 278532
|L1.3420|
000d5c 00044010 DCD ||.bss$2|| + 278544
|L1.3424|
000d60 00044015 DCD ||.bss$2|| + 278549
|L1.3428|
000d64 00044008 DCD ||.bss$2|| + 278536
|L1.3432|
000d68 59524844 DCB "DHRY"
000d6c 4e4f5453 DCB "STON"
000d70 52502
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -