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

📄 memcopy.lst

📁 STR912 arm9实现的以太网通信程序
💻 LST
📖 第 1 页 / 共 2 页
字号:



ARM Macro Assembler    Page 1 


    1 00000000         ;/******************** (C) COPYRIGHT 2007 STMicroelectro
                       nics ********************
    2 00000000         ; File Name          : memcopy.s
    3 00000000         ; Author             : MCD Application Team
    4 00000000         ; Version            : V2.0
    5 00000000         ; Date               : 12/07/2007
    6 00000000         ; Description        : This file contains optimized memc
                       opy functions
    7 00000000         ;*******************************************************
                       *************************
    8 00000000         ; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS A
                       T PROVIDING CUSTOMERS
    9 00000000         ; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN OR
                       DER FOR THEM TO SAVE TIME.
   10 00000000         ; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIAB
                       LE FOR ANY DIRECT,
   11 00000000         ; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY 
                       CLAIMS ARISING FROM THE
   12 00000000         ; CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOM
                       ERS OF THE CODING
   13 00000000         ; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR 
                       PRODUCTS.
   14 00000000         ;*******************************************************
                       ***********************/
   15 00000000         
   16 00000000         
   17 00000000                 AREA             CODE, CODE, READONLY
   18 00000000                 CODE32
   19 00000000         
   20 00000000                 EXPORT           MEMCOPY_L2S_BY4
   21 00000000                 EXPORT           MEMCOPY_S2L_BY4
   22 00000000                 EXPORT           MEMCOPY_L2L_BY4
   23 00000000         
   24 00000000         
   25 00000000         
   26 00000000         ; void  MEMCOPY_L2S_BY4 (void *pBUFOUT, void *pBUFIN, lo
                       ng nBytes)
   27 00000000         ;  Copy N bytes from a 32-bit aligned buffer to a 16-bit
                        aligned buffer.
   28 00000000         ; Resources:
   29 00000000         ;  R0,R1,R2: parameters
   30 00000000         ;  R3-R10: locals
   31 00000000         ; Notes:
   32 00000000         ; - N Minimum is 16 bytes
   33 00000000         ; - pointer source and dest cannot be exactly the same; 
                       but an offset of -4 between dst and source will work
   34 00000000         ;///////////////////////////////////////////////////////
                       //////////////////// */
   35 00000000         
   36 00000000         MEMCOPY_L2S_BY4
   37 00000000 E92D07F0        STMFD            SP!, {R4-R10}
   38 00000004 EA00000D        B                d_begin
   39 00000008         d_main
   40 00000008 E8B102A8        LDMIA            R1!,{R3,R5,R7,R9}
   41 0000000C E1A04823        MOV              R4, R3, LSR #16
   42 00000010 E1A06825        MOV              R6, R5, LSR #16
   43 00000014 E1A08827        MOV              R8, R7, LSR #16
   44 00000018 E1A0A829        MOV              R10, R9, LSR #16
   45 0000001C E0C030B2        STRH             R3, [R0], #2



ARM Macro Assembler    Page 2 


   46 00000020 E0C040B2        STRH             R4, [R0], #2
   47 00000024 E0C050B2        STRH             R5, [R0], #2
   48 00000028 E0C060B2        STRH             R6, [R0], #2
   49 0000002C E0C070B2        STRH             R7, [R0], #2
   50 00000030 E0C080B2        STRH             R8, [R0], #2
   51 00000034 E0C090B2        STRH             R9, [R0], #2
   52 00000038 E0C0A0B2        STRH             R10, [R0], #2
   53 0000003C E2422010        SUB              R2, R2, #16
   54 00000040         d_begin
   55 00000040 E3520010        CMP              R2,#16      ;if ( remaining_byt
                                                            es >= 16)
   56 00000044 2AFFFFEF        BHS              d_main      ;keep on looping
   57 00000048         ;else switch(remaining_bytes) d_swit d_0123
   58 00000048 E3520003        CMP              R2,#3       ;remaining <= 3 byt
                                                            es?
   59 0000004C 9A000012        BLS              d_switch
   60 00000050         
   61 00000050         d_4567
   62 00000050         
   63 00000050 E4913004        LDR              R3, [R1], #4
   64 00000054 E1A04823        MOV              R4, R3, LSR #16
   65 00000058 E0C030B2        STRH             R3, [R0], #2
   66 0000005C E0C040B2        STRH             R4, [R0], #2
   67 00000060 E2422004        SUB              R2, R2, #4
   68 00000064 E3520003        CMP              R2,#3       ; remaining <= 3 by
                                                            tes?
   69 00000068 9A00000B        BLS              d_switch    ;    switch(remaini
                                                            ng_bytes 0,1,2,3)
   70 0000006C         
   71 0000006C         d_891011
   72 0000006C         
   73 0000006C E4913004        LDR              R3, [R1], #4
   74 00000070 E1A04823        MOV              R4, R3, LSR #16
   75 00000074 E0C030B2        STRH             R3, [R0], #2
   76 00000078 E0C040B2        STRH             R4, [R0], #2
   77 0000007C E2422004        SUB              R2, R2, #4
   78 00000080 E3520003        CMP              R2,#3       ; remaining <= 3 by
                                                            tes?
   79 00000084 9A000004        BLS              d_switch    ;    switch(remaini
                                                            ng_bytes 0,1,2,3)
   80 00000088         
   81 00000088         d_12131415
   82 00000088         
   83 00000088 E4913004        LDR              R3, [R1], #4
   84 0000008C E1A04823        MOV              R4, R3, LSR #16
   85 00000090 E0C030B2        STRH             R3, [R0], #2
   86 00000094 E0C040B2        STRH             R4, [R0], #2
   87 00000098 E2422004        SUB              R2, R2, #4
   88 0000009C         
   89 0000009C         d_switch
   90 0000009C         
   91 0000009C E79FF102        LDR              PC,[PC, R2, LSL#2]
   92 000000A0 EA00000D        B                d_END
   93 000000A4 00000000        DCD              d_END
   94 000000A8 00000000        DCD              d_1B
   95 000000AC 00000000        DCD              d_2B
   96 000000B0 00000000        DCD              d_3B
   97 000000B4         
   98 000000B4         d_1B



ARM Macro Assembler    Page 3 


   99 000000B4         
  100 000000B4 E5D13000        LDRB             R3, [R1]
  101 000000B8 E5C03000        STRB             R3, [R0]
  102 000000BC EA000006        B                d_END
  103 000000C0         
  104 000000C0         d_2B
  105 000000C0         
  106 000000C0 E1D130B0        LDRH             R3, [R1]
  107 000000C4 E1C030B0        STRH             R3, [R0]
  108 000000C8 EA000003        B                d_END
  109 000000CC         
  110 000000CC         d_3B
  111 000000CC E0D130B2        LDRH             R3, [R1], #2
  112 000000D0 E5D14000        LDRB             R4, [R1]
  113 000000D4 E0C030B2        STRH             R3, [R0], #2
  114 000000D8 E5C04000        STRB             R4, [R0]
  115 000000DC         
  116 000000DC         d_END
  117 000000DC         
  118 000000DC E8BD07F0        LDMFD            SP!, {R4-R10}
  119 000000E0 E12FFF1E        BX               LR
  120 000000E4         
  121 000000E4         
  122 000000E4         ; void  MEMCOPY_L2L_BY4 (void *pBUFOUT, void *pBUFIN, lo
                       ng nBytes)
  123 000000E4         ;  Copy N bytes from a 32-bit aligned buffer to a 32-bit
                        aligned buffer.
  124 000000E4         ; Resources:
  125 000000E4         ;  R0,R1,R2: parameters
  126 000000E4         ;  R3-R10: locals
  127 000000E4         ; Notes:
  128 000000E4         ; - N Minimum is 16 bytes
  129 000000E4         ; - pointer source and dest cannot be exactly the same; 
                       but an offset of -4 between dst and source will work
  130 000000E4         
  131 000000E4         MEMCOPY_L2L_BY4
  132 000000E4 E92D07F0        STMFD            SP!, {R4-R10}
  133 000000E8         
  134 000000E8         e_main
  135 000000E8 E8B102A8        LDMIA            R1!,{R3,R5,R7,R9}
  136 000000EC E8A002A8        STMIA            R0!,{R3,R5,R7,R9}
  137 000000F0 E2422010        SUB              R2, R2, #16
  138 000000F4 E3520010        CMP              R2,#16      ; if ( remaining_by
                                                            tes >= 16)
  139 000000F8 2AFFFFFA        BHS              e_main      ; keep on looping
  140 000000FC         ; else switch(remaining_bytes)
  141 000000FC         e_swit
  142 000000FC         e_0123
  143 000000FC E3520003        CMP              R2,#3       ; remaining <= 3 by
                                                            tes?
  144 00000100 9A00000C        BLS              e_switch
  145 00000104         e_4567
  146 00000104         
  147 00000104 E4913004        LDR              R3, [R1], #4
  148 00000108 E4803004        STR              R3, [R0], #4
  149 0000010C E2422004        SUB              R2, R2, #4
  150 00000110 E3520003        CMP              R2,#3       ; remaining <= 3 by
                                                            tes?
  151 00000114 9A000007        BLS              e_switch    ; switch(remaining_



ARM Macro Assembler    Page 4 


                                                            bytes 0,1,2,3)
  152 00000118         e_891011
  153 00000118 E4913004        LDR              R3, [R1], #4
  154 0000011C E4803004        STR              R3, [R0], #4
  155 00000120 E2422004        SUB              R2, R2, #4
  156 00000124 E3520003        CMP              R2,#3       ; remaining <= 3 by
                                                            tes?
  157 00000128 9A000002        BLS              e_switch    ;    switch(remaini
                                                            ng_bytes 0,1,2,3)
  158 0000012C         e_12131415
  159 0000012C E4913004        LDR              R3, [R1], #4
  160 00000130 E4803004        STR              R3, [R0], #4
  161 00000134 E2422004        SUB              R2, R2, #4
  162 00000138         
  163 00000138         e_switch
  164 00000138 E79FF102        LDR              PC,[PC, R2, LSL#2]
  165 0000013C EA00000C        B                e_END
  166 00000140 00 00           DCW              e_END
  167 00000142 00 00           DCW              e_1B
  168 00000144 00 00           DCW              e_2B
  169 00000146 00 00           DCW              e_3B
  170 00000148         
  171 00000148         e_1B
  172 00000148 E5D13000        LDRB             R3, [R1]
  173 0000014C E5C03000        STRB             R3, [R0]
  174 00000150 EA000007        B                e_END
  175 00000154         e_2B
  176 00000154 E1D130B0        LDRH             R3, [R1]
  177 00000158 E1C030B0        STRH             R3, [R0]
  178 0000015C EA000004        B                e_END
  179 00000160         e_3B
  180 00000160 E0D130B2        LDRH             R3, [R1], #2
  181 00000164 E5D14000        LDRB             R4, [R1]
  182 00000168 E0C030B2        STRH             R3, [R0], #2
  183 0000016C E5C04000        STRB             R4, [R0]
  184 00000170 EAFFFFFF        B                e_END
  185 00000174         e_END
  186 00000174 E8BD07F0        LDMFD            SP!, {R4-R10}
  187 00000178 E12FFF1E        BX               LR
  188 0000017C         
  189 0000017C         ; void  MEMCOPY_S2L_BY4 (void *pBUFOUT, void *pBUFIN, lo
                       ng nBytes)
  190 0000017C         ;  Copy N bytes from a 32-bit aligned buffer to a 16-bit
                        aligned buffer.
  191 0000017C         ; Resources:
  192 0000017C         ;  R0,R1,R2: parameters
  193 0000017C         ;  R3-R10: locals
  194 0000017C         ; Notes:
  195 0000017C         ; - N Minimum is 16 bytes
  196 0000017C         ; - pointer source and dest cannot be exactly the same; 
                       but an offset of -4 between dst and source will work
  197 0000017C         
  198 0000017C         MEMCOPY_S2L_BY4
  199 0000017C E92D07F0        STMFD            SP!, {R4-R10}
  200 00000180         
  201 00000180         f_main
  202 00000180 E0D130B2        LDRH             R3, [R1], #2
  203 00000184 E0D140B2        LDRH             R4, [R1], #2
  204 00000188 E0D150B2        LDRH             R5, [R1], #2



ARM Macro Assembler    Page 5 


  205 0000018C E0D160B2        LDRH             R6, [R1], #2
  206 00000190 E0D170B2        LDRH             R7, [R1], #2
  207 00000194 E0D180B2        LDRH             R8, [R1], #2
  208 00000198 E0D190B2        LDRH             R9, [R1], #2
  209 0000019C E0D1A0B2        LDRH             R10, [R1], #2
  210 000001A0 E1833804        ORR              R3,R3,R4,  LSL#16
  211 000001A4 E1855806        ORR              R5,R5,R6,  LSL#16
  212 000001A8 E1877808        ORR              R7,R7,R8,  LSL#16
  213 000001AC E189980A        ORR              R9,R9,R10, LSL#16
  214 000001B0 E8A002A8        STMIA            R0!,{R3,R5,R7,R9}
  215 000001B4 E2422010        SUB              R2, R2, #16
  216 000001B8 E3520010        CMP              R2,#16      ; if ( remaining_by
                                                            tes >= 16)
  217 000001BC 2AFFFFEF        BHS              f_main      ; keep on looping
  218 000001C0         ; else switch(remaining_bytes)
  219 000001C0         f_swit
  220 000001C0         f_0123
  221 000001C0 E3520003        CMP              R2,#3       ; remaining <= 3 by
                                                            tes?
  222 000001C4 9A000012        BLS              f_switch
  223 000001C8         f_4567
  224 000001C8 E0D130B2        LDRH             R3, [R1], #2
  225 000001CC E0D140B2        LDRH             R4, [R1], #2
  226 000001D0 E1833804        ORR              R3,R3,R4, LSL#16
  227 000001D4 E4803004        STR              R3, [R0], #4
  228 000001D8 E2422004        SUB              R2, R2, #4
  229 000001DC E3520003        CMP              R2,#3       ; remaining <= 3 by
                                                            tes?
  230 000001E0 9A00000B        BLS              f_switch    ;    switch(remaini
                                                            ng_bytes 0,1,2,3)
  231 000001E4         f_891011
  232 000001E4 E0D130B2        LDRH             R3, [R1], #2
  233 000001E8 E0D140B2        LDRH             R4, [R1], #2
  234 000001EC E1833804        ORR              R3,R3,R4, LSL#16
  235 000001F0 E4803004        STR              R3, [R0], #4
  236 000001F4 E2422004        SUB              R2, R2, #4
  237 000001F8 E3520003        CMP              R2,#3       ; remaining <= 3 by
                                                            tes?
  238 000001FC 9A000004        BLS              f_switch    ;    switch(remaini
                                                            ng_bytes 0,1,2,3)
  239 00000200         f_12131415
  240 00000200 E0D130B2        LDRH             R3, [R1], #2
  241 00000204 E0D140B2        LDRH             R4, [R1], #2
  242 00000208 E1833804        ORR              R3,R3,R4, LSL#16
  243 0000020C E4803004        STR              R3, [R0], #4
  244 00000210 E2422004        SUB              R2, R2, #4
  245 00000214         
  246 00000214         f_switch
  247 00000214 E79FF102        LDR              PC,[PC, R2, LSL#2]
  248 00000218 EA00000C        B                f_END
  249 0000021C 00 00           DCW              f_END
  250 0000021E 00 00           DCW              f_1B
  251 00000220 00 00           DCW              f_2B
  252 00000222 00 00           DCW              f_3B
  253 00000224         
  254 00000224         f_1B
  255 00000224 E5D13000        LDRB             R3, [R1]
  256 00000228 E5C03000        STRB             R3, [R0]
  257 0000022C EA000007        B                f_END



ARM Macro Assembler    Page 6 


  258 00000230         f_2B
  259 00000230 E1D130B0        LDRH             R3, [R1]
  260 00000234 E1C030B0        STRH             R3, [R0]
  261 00000238 EA000004        B                f_END
  262 0000023C         f_3B
  263 0000023C E0D130B2        LDRH             R3, [R1], #2
  264 00000240 E5D14000        LDRB             R4, [R1]
  265 00000244 E0C030B2        STRH             R3, [R0], #2
  266 00000248 E5C04000        STRB             R4, [R0]
  267 0000024C EAFFFFFF        B                f_END
  268 00000250         f_END
  269 00000250 E8BD07F0        LDMFD            SP!, {R4-R10}
  270 00000254 E12FFF1E        BX               LR
  271 00000258         
  272 00000258                 END
Command Line: --debug --xref --device=DARMST9 --apcs=interwork -omemcopy.o -IC:
\Keil\ARM\INC\ST\91x --list=.\memcopy.lst Startup\memcopy.s



ARM Macro Assembler    Page 1 Alphabetic symbol ordering
Relocatable symbols

CODE 00000000

Symbol: CODE
   Definitions
      At line 17 in file Startup\memcopy.s
   Uses
      None
Comment: CODE unused
MEMCOPY_L2L_BY4 000000E4

Symbol: MEMCOPY_L2L_BY4
   Definitions
      At line 131 in file Startup\memcopy.s
   Uses
      At line 22 in file Startup\memcopy.s
Comment: MEMCOPY_L2L_BY4 used once
MEMCOPY_L2S_BY4 00000000

Symbol: MEMCOPY_L2S_BY4

⌨️ 快捷键说明

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