📄 copymblock.asm
字号:
; ======== loop 2 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 3 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 4 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 5 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 6 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 7 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 8 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 9 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 10 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 11 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 12 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 13 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 14 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
;; preload the n+2 stride
& 0xf5d8f000 ; pld[r8] loop n+2 src beginning
& 0xf5d8f00f ; pld[r8,#f] loop n+2 src end
add r8,r2,r8 ; r8 has pointer to next src line
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 15 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
; add stride to src (for loop n+1)
add r0, r0, r2
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; ======== loop 16 ========
; copy 4 words
;; load the words
ldr r3, [r0]
ldr r4, [r0,#4]
ldr r5, [r0,#8]
ldr r6, [r0,#12]
; add stride to dest (for this loop)
add r1, r1, r2
str r3, [r1]
str r4, [r1,#4]
str r5, [r1,#8]
str r6, [r1,#12]
; return
ldmia sp!, {r4 - r8, pc} ; ldmfd
|$M223|
ENDP ; |CopyMBlock|, CopyMBlock
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -