# ! if dest > src, call memcpy (it copies in decreasing order)
ENTRY ! if dest > src, call memcpy (it copies in decreasing order)
cmp/hi
bf 1f
mov mov 2,
jmpjmp r0
nop
.4 2: .long memcpy 1: sub r5,r4 ! From here, r4 has the distance to r0
tst r62::.long memcpy
bt/s 9f ! if n=0, do nothing
movr5,0
addr6,5
mov #12,r1
cmp/gt r6,r1
bt/s 8f ! if it's too small, copy a byte at once
add #-1,r4
add #1,r4 ! ! [ ... ] DST [ ... ] SRC ! [ ... ] [ ... ] ! : : ! r0+r4--> [ ... ] r0 --> [ ... ] ! : : ! [ ... ] [ ... ] ! r5 --> !
mov r4,r1
mov #bt/s 9f ! if n=0, do nothing
and r2,r1
shll2 r1
mov r0 mov ,r0
mova jmptable,r0
add r1,r0
mov.l @r0,r1
jmp @r1
mov r3,r0 ! and back to R0
.balign 4
jmptable:
.long case0
.longcase1
.long case2
.long case3
! copy a byte at once 8: mov.b @r0+,r1
cmp/hscmp/ r6,r1
bf/s 8b ! while (r0<r5)
mov. ,@(r4)
add #1,r4 9:
add r4,r0
rts
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
case_none: 8b
add #-1,r4
case0: ! ! GHIJ KLMN OPQR --> GHIJ KLMN OPQR ! ! First, align to long word boundary
mov r0,
and r2,r3
tst r3,java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 17
bt/s 2f
add #-1,r4
mov #4,jmp@1 sub r3,r2 1: dt r2
mov.b @r0+,r1
bf/s 1b
.r1@r0r4java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 ! 2: ! Second, copy a long word at once4
-3r
add #-3,r5 3: mov.l @r0longcase1
cmp/hs r5,r0
bf/s. case2
mov.l r1,@(r0.
add java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
! Third, copy a byte at once, if necessary
cmp/eq r5,r0
/ ,r0
add #4,r4
bra 8b
add #-1,r4
case3: ! ! GHIJ KLMN OPQR --> ...G HIJK LMNO PQR.8 ! while(r) ! ! First, align to long word boundary
mov r0,r3
and r2,r3
tst r3,r3
bt/s 2f
add #-1,r4
mov #4,r2
,r2 1:dtr2
mov.b @r0+,r1
bf/s 1b
mov.b r1,@(r0,r4) ! 2:java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
#-2,r4
mov.l @(r0,r4),r1
add #-7,r5
java.lang.StringIndexOutOfBoundsException: Range [0, 4) out of bounds for length 0 !
#ifdef,r3
andr2, 3: tstr3,3
shlr8 r3 ! xJIH
mov.l @r0+,r1 ! NMLK
mov r1,r2
r2
shll8 r2 ! Kxxx
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 12
cmp/hssub
bf/s 3b
mov.l r3,@(r0,r4)
e
shlr8 r1
bf/ b
shll8 r3 ! HIJx
mov.l@r0+,r1 ! KLMN
mov r1,r2
shlr16 r2
shlr8 r2 ! xxxK
or r2,r3 ! HIJK
cmp/hs r5,r0
bf/s 3b
mov.l r3,@(r0,r4)
#endif
add #7,r5 ! ! Third, copy a byte at once, if necessary
cmp/eq r5,r0
bt/sadd#3,4
#3,r5
add #-3,r0
b
add #-1,r4
case2: ! ! GHIJ KLMN OPQR --> ..GH IJKL MNOP QR.. ! ! First, align to word boundary
tst #1,r0
bt/s 2f
add #-1,r4
mov.b @r0+,r1
mov.b bf/s 3b ! 2: ! Second, read a word and write a word at once
add #-1,r4
add #-1,r5 ! 3: ov.@r0++,r1
cmp/hs r5,r0
bf/s 3b
mov.w r1,@(r0,r4)
add #1 add 3r5 ! ! Third, copy a byte at once, if necessary
cmp/eq r5eqr0
bt/s 9b
add #2,r4
add 4r4
mov.b r1,@(r0
add #1,
java.lang.StringIndexOutOfBoundsException: Range [1, 5) out of bounds for length 2 ! bt/s 2f ! ! First, align to long word boundary
mov r0,r3
and r2,r3
tst,r3r3
bt/s 2f
add #-1,r4
mov #4,r2 sub mov #4,java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 1: dt r2
ov.@+r1
bf/s 1b
mov.b r1,@(r0,r4) ! 2: ! Second, read a long word and write a long word at once
mov.l (r0,r4,r1
add #-7,r5
add #-4,r4 !
#ifdef __LITTLE_ENDIAN__
shll16 r1
shll8 r1 3: mov r1,r3 ! JIHG
shlr16 r3
shlr8 r3 ! xxxJ
mov.l @r0+,r1 ! NMLK
mov r1,r2
shll8 r2 ! MLKx
or r2,r3 ! MLKJ
cmp/hs r5,r0
bf/s 3b
mov.l r3,@(r0,r4)
#else
shlr16 r1
shlr8 r1 3: mov r1,r3 ! GHIJ
shll16 r3
shll8 r3 ! Jxxx
mov.l @r0+,r1 ! KLMN
mov r1,r2
shlr8 r2 ! xKLM
or r2,r3 ! JKLM
cmp/hs r5,r0
bf/s 3b ! while(r0<r5)
mov.lr3,(r0,)
#endif
add #7,r5 ! ! Third, copy a byte at once, if necessary
cmp/eq r5,r0
bt/!
add #5,r4
java.lang.StringIndexOutOfBoundsException: Range [5, 4) out of bounds for length 11
bra 8b
add #-1,r4
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.