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

📄 dhry_1.lst

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 LST
📖 第 1 页 / 共 3 页
字号:
    123          
    124          void Proc_3 (Rec_Pointer *Ptr_Ref_Par)
    125          /******************/
    126              /* executed once */
    127              /* Ptr_Ref_Par becomes Ptr_Glob */
    128          {
    129              if (Ptr_Glob != Null)
   \   00000044   D81096E5              LDR      R1,[R6, #+216]
   \   00000048   000051E3              CMP      R1,#+0x0
    130                  *Ptr_Ref_Par = Ptr_Glob->Ptr_Comp;
   \   0000004C   00209115              LDRNE    R2,[R1, #+0]
   \   00000050   00208015              STRNE    R2,[R0, #+0]
    131              Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp);
   \   00000054   D80096E5              LDR      R0,[R6, #+216]
   \   00000058   0C2080E2              ADD      R2,R0,#+0xC
   \   0000005C   D01096E5              LDR      R1,[R6, #+208]
   \   00000060   0A00A0E3              MOV      R0,#+0xA
   \   00000064   ........              BL       Proc_7
    132          } /* Proc_3 */
   \   00000068   0400D5E5              LDRB     R0,[R5, #+4]
   \   0000006C   000050E3              CMP      R0,#+0x0
   \   00000070   0C00001A              BNE      ??Proc_1_2
   \   00000074   0600A0E3              MOV      R0,#+0x6
   \   00000078   0C0085E5              STR      R0,[R5, #+12]
   \   0000007C   081085E2              ADD      R1,R5,#+0x8
   \   00000080   0800D4E5              LDRB     R0,[R4, #+8]
   \   00000084   ........              BL       Proc_6
   \   00000088   D80096E5              LDR      R0,[R6, #+216]
   \   0000008C   001090E5              LDR      R1,[R0, #+0]
   \   00000090   001085E5              STR      R1,[R5, #+0]
   \   00000094   0C2085E2              ADD      R2,R5,#+0xC
   \   00000098   0A10A0E3              MOV      R1,#+0xA
   \   0000009C   0C0095E5              LDR      R0,[R5, #+12]
   \   000000A0   ........              BL       Proc_7
   \   000000A4   7080BDE8              LDMIA    SP!,{R4-R6,PC}     ;; return
   \                     ??Proc_1_2:
   \   000000A8   000094E5              LDR      R0,[R4, #+0]
   \   000000AC   3020A0E3              MOV      R2,#+0x30
   \                     ??Proc_1_3:
   \   000000B0   042052E2              SUBS     R2,R2,#+0x4
   \   000000B4   021090E7              LDR      R1,[R0, R2]
   \   000000B8   021084E7              STR      R1,[R4, R2]
   \   000000BC   FBFFFF1A              BNE      ??Proc_1_3
   \   000000C0   7080BDE8              LDMIA    SP!,{R4-R6,PC}     ;; return
   \   000000C4                         DATA     
   \                     ??Proc_1_0:
   \   000000C4   ........              DC32     Arr_1_Glob

   \                                 In segment NEARFUNC_A, align 4, keep-with-next
   \   00000000                         CODE32   
   \                     Proc_2:
   \   00000000   10002DE9              STMDB    SP!,{R4}           ;; Push
   \   00000004   002090E5              LDR      R2,[R0, #+0]
   \   00000008   0A2082E2              ADD      R2,R2,#+0xA
   \   0000000C   30309FE5              LDR      R3,??Proc_2_0      ;; #Arr_1_Glob
   \   00000010   C840D3E5              LDRB     R4,[R3, #+200]
   \   00000014   410054E3              CMP      R4,#+0x41
   \   00000018   0400001A              BNE      ??Proc_2_1
   \   0000001C   011042E2              SUB      R1,R2,#+0x1
   \   00000020   D02093E5              LDR      R2,[R3, #+208]
   \   00000024   021041E0              SUB      R1,R1,R2
   \   00000028   001080E5              STR      R1,[R0, #+0]
   \   0000002C   020000EA              B        ??Proc_2_2
   \                     ??Proc_2_1:
   \   00000030   FF1001E2              AND      R1,R1,#+0xFF       ;; Zero extend
   \   00000034   000051E3              CMP      R1,#+0x0
   \   00000038   FCFFFF1A              BNE      ??Proc_2_1
   \                     ??Proc_2_2:
   \   0000003C   1000BDE8              LDMIA    SP!,{R4}           ;; Pop
   \   00000040   0EF0A0E1              MOV      PC,LR              ;; return
   \   00000044                         DATA     
   \                     ??Proc_2_0:
   \   00000044   ........              DC32     Arr_1_Glob

   \                                 In segment NEARFUNC_A, align 4
   \   00000000                         CODE32   
   \                     Proc_3:
   \   00000000   00402DE9              STMDB    SP!,{LR}           ;; Push
   \   00000004   24309FE5              LDR      R3,??Proc_3_0      ;; #Arr_1_Glob
   \   00000008   D81093E5              LDR      R1,[R3, #+216]
   \   0000000C   000051E3              CMP      R1,#+0x0
   \   00000010   00209115              LDRNE    R2,[R1, #+0]
   \   00000014   00208015              STRNE    R2,[R0, #+0]
   \   00000018   D80093E5              LDR      R0,[R3, #+216]
   \   0000001C   0C2080E2              ADD      R2,R0,#+0xC
   \   00000020   D01093E5              LDR      R1,[R3, #+208]
   \   00000024   0A00A0E3              MOV      R0,#+0xA
   \   00000028   ........              BL       Proc_7
   \   0000002C   0080BDE8              LDMIA    SP!,{PC}           ;; return
   \   00000030                         DATA     
   \                     ??Proc_3_0:
   \   00000030   ........              DC32     Arr_1_Glob
    133          
    134          

   \                                 In segment NEARFUNC_A, align 4
   \   00000000                         CODE32   
    135          void Proc_4 ( void )
    136          /*******/
    137              /* executed once */
    138          {
    139              Boolean Bool_Loc;
    140          
    141              Bool_Loc = Ch_1_Glob == 'A';
   \                     Proc_4:
   \   00000000   28009FE5              LDR      R0,??Proc_4_0      ;; #Arr_1_Glob
   \   00000004   C810D0E5              LDRB     R1,[R0, #+200]
   \   00000008   410051E3              CMP      R1,#+0x41
   \   0000000C   0110A003              MOVEQ    R1,#+0x1
   \   00000010   0010A013              MOVNE    R1,#+0x0
   \   00000014   0120A0E1              MOV      R2,R1
    142              Bool_Glob = Bool_Loc | Bool_Glob;
   \   00000018   CC1090E5              LDR      R1,[R0, #+204]
   \   0000001C   021081E1              ORR      R1,R1,R2
   \   00000020   CC1080E5              STR      R1,[R0, #+204]
    143              Ch_2_Glob = 'B';
   \   00000024   4210A0E3              MOV      R1,#+0x42
   \   00000028   C910C0E5              STRB     R1,[R0, #+201]
    144          } /* Proc_4 */
   \   0000002C   0EF0A0E1              MOV      PC,LR              ;; return
   \   00000030                         DATA     
   \                     ??Proc_4_0:
   \   00000030   ........              DC32     Arr_1_Glob
    145          
    146          

   \                                 In segment NEARFUNC_A, align 4
   \   00000000                         CODE32   
    147          void Proc_5 ( void )
    148          /*******/
    149          {
    150              Ch_1_Glob = 'A';
   \                     Proc_5:
   \   00000000   10009FE5              LDR      R0,??Proc_5_0      ;; #Arr_1_Glob
   \   00000004   4110A0E3              MOV      R1,#+0x41
   \   00000008   C810C0E5              STRB     R1,[R0, #+200]
    151              Bool_Glob = false;
   \   0000000C   0010A0E3              MOV      R1,#+0x0
   \   00000010   CC1080E5              STR      R1,[R0, #+204]
    152          } /* Proc_5 */
   \   00000014   0EF0A0E1              MOV      PC,LR              ;; return
   \   00000018                         DATA     
   \                     ??Proc_5_0:
   \   00000018   ........              DC32     Arr_1_Glob
    153          
    154          
    155          //int main ( void )

   \                                 In segment NEARFUNC_A, align 4, keep-with-next
   \   00000000                         CODE32   
    156          void testloop ( int Number_Of_Runs )
    157          /*****/
    158          
    159          /* main program, corresponds to procedures        */
    160          /* Main and Proc_0 in the Ada version             */
    161          {
   \                     testloop:
   \   00000000   F0432DE9              STMDB    SP!,{R4-R9,LR}     ;; Push
   \   00000004   44D04DE2              SUB      SP,SP,#+0x44
   \   00000008   0040A0E1              MOV      R4,R0
    162              One_Fifty       Int_1_Loc;
    163              REG One_Fifty   Int_2_Loc;
    164              One_Fifty       Int_3_Loc;
    165              REG char        Ch_Index;
    166              Enumeration     Enum_Loc;
    167              Str_30          Str_1_Loc;
    168              Str_30          Str_2_Loc;
    169              REG int         Run_Index;
    170            
    171          
    172              /* Initializations */
    173              Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
   \   0000000C   A0519FE5              LDR      R5,??testloop_0    ;; #Arr_1_Glob
   \   00000010   3000A0E3              MOV      R0,#+0x30
   \   00000014   ........              BL       malloc
   \   00000018   D40085E5              STR      R0,[R5, #+212]
    174              Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
   \   0000001C   3000A0E3              MOV      R0,#+0x30
   \   00000020   ........              BL       malloc
   \   00000024   D80085E5              STR      R0,[R5, #+216]
    175          
    176              Ptr_Glob->Ptr_Comp                    = Next_Ptr_Glob;
   \   00000028   D40095E5              LDR      R0,[R5, #+212]
   \   0000002C   D81095E5              LDR      R1,[R5, #+216]
   \   00000030   000081E5              STR      R0,[R1, #+0]
    177              Ptr_Glob->Discr                       = Ident_1;
   \   00000034   0000A0E3              MOV      R0,#+0x0
   \   00000038   D81095E5              LDR      R1,[R5, #+216]
   \   0000003C   0400C1E5              STRB     R0,[R1, #+4]
    178              Ptr_Glob->variant.var_1.Enum_Comp     = Ident_3;
   \   00000040   0200A0E3              MOV      R0,#+0x2
   \   00000044   D81095E5              LDR      R1,[R5, #+216]
   \   00000048   0800C1E5              STRB     R0,[R1, #+8]
    179              Ptr_Glob->variant.var_1.Int_Comp      = 40;
   \   0000004C   2800A0E3              MOV      R0,#+0x28
   \   00000050   D81095E5              LDR      R1,[R5, #+216]
   \   00000054   0C0081E5              STR      R0,[R1, #+12]
    180              strcpy (Ptr_Glob->variant.var_1.Str_Comp,
    181                      "DHRYSTONE PROGRAM, SOME STRING");
   \   00000058   58019FE5              LDR      R0,??testloop_0+4  ;; #`?<Constant "DHRYSTONE PROGRAM, SO...">`
   \   0000005C   D81095E5              LDR      R1,[R5, #+216]
   \   00000060   101081E2              ADD      R1,R1,#+0x10
   \                     ??testloop_1:
   \   00000064   ........              LDRB     R2,[R0], #+1
   \   00000068   ........              STRB     R2,[R1], #+1
   \   0000006C   000052E3              CMP      R2,#+0x0
   \   00000070   FBFFFF1A              BNE      ??testloop_1
    182              strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
   \   00000074   40019FE5              LDR      R0,??testloop_0+8  ;; #`?<Constant "DHRYSTONE PROGRAM, 1\\'...">`
   \   00000078   24108DE2              ADD      R1,SP,#+0x24
   \                     ??testloop_2:
   \   0000007C   ........              LDRB     R2,[R0], #+1
   \   00000080   ........              STRB     R2,[R1], #+1
   \   00000084   000052E3              CMP      R2,#+0x0

⌨️ 快捷键说明

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