copymblock.asm

来自「PocketMVP V0.8082503 source for Pocket 的」· 汇编 代码 · 共 744 行 · 第 1/2 页

ASM
744
字号
	
; ======== 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 + =
减小字号Ctrl + -
显示快捷键?