📄 jnand_memmove.s
字号:
/* GNU memmove function. !Stolen! from the library of the arm tools. */
; .text
; .code 16
; .globl memmove
; .globl memcpy
; .thumb_func
;memmove:
; .thumb_func
;memcpy:
EXPORT memcpy
EXPORT memmove
AREA FastCopyMove, CODE, READONLY
CODE16
memmove
memcpy
sub r3, r0, r1
cmp r3, r2
bcc l68
mov ip, r0
lsl r3, r1, #30
beq l1c
lc
sub r2, r2, #1
bcc l64
ldrb r3, [r1, #0]
strb r3, [r0, #0]
add r0, r0, #1
add r1, r1, #1
lsl r3, r1, #30
bne lc
l1c
lsl r3, r0, #30
bne l50
sub r2, #16
bcc l30
push {r4, r5, r7}
l26
ldmia r1!,{r3, r4, r5, r7}
stmia r0!,{r3, r4, r5, r7}
sub r2, #16
bcs l26
pop {r4, r5, r7}
l30
add r2, #12
bcc l54
l34
ldmia r1!,{r3}
stmia r0!,{r3}
sub r2, r2, #4
bcs l34
b l54
l3e
ldmia r1!,{r3}
strb r3, [r0, #0]
lsr r3, r3, #8
strb r3, [r0, #1]
lsr r3, r3, #8
strb r3, [r0, #2]
lsr r3, r3, #8
strb r3, [r0, #3]
add r0, r0, #4
l50
sub r2, r2, #4
bcs l3e
l54
add r2, r2, #3
bcc l64
l58
ldrb r3, [r1, #0]
strb r3, [r0, #0]
add r1, r1, #1
add r0, r0, #1
sub r2, r2, #1
bcs l58
l64
mov r0, ip
bx lr
l68
add r3, r0, #0
orr r3, r1
orr r3, r2
lsl r3, r3, #30
bne l7c
l72
sub r2, r2, #4
ldr r3, [r1, r2]
str r3, [r0, r2]
bne l72
bx lr
l7c
sub r2, r2, #1
ldrb r3, [r1, r2]
strb r3, [r0, r2]
bne l7c
bx lr
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -