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

📄 dhry_2.lst

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 LST
📖 第 1 页 / 共 2 页
字号:
    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 + -