Цитата(VslavX @ Aug 22 2010, 16:39)

aaarrrВы не могли бы добавить архивчик с исходником использованной в Ваших тестах memcpy()? Для полноты картины

Пожалуйста. Эта memcpy используется в ADS 1.2, RVDS 2.2 и RVDS 4.1. По всей видимости в ARM решили, что допиливать там больше нечего.
Цитата(AlexandrY @ Aug 22 2010, 17:30)

Никто бы не стал тестировать memcpy если б были исходники этой функции.
Почему же? У меня были, но все равно оказалось любопытно

CODE
__rt_memcpy
cmp r2,#3
bls _memcpy_lastbytes
ands r12,r0,#3
beq _memcpy_dest_aligned
ldrb r3,[r1],#1
cmp r12,#2
add r2,r2,r12
ldrlsb r12,[r1],#1
strb r3,[r0],#1
ldrccb r3,[r1],#1
strlsb r12,[r0],#1
sub r2,r2,#4
strccb r3,[r0],#1
_memcpy_dest_aligned
ands r3,r1,#3
beq __rt_memcpy_w
subs r2,r2,#4
bcc _memcpy_lastbytes
ldr r12,[r1,-r3]!
cmp r3,#2
beq _memcpy_src2_loop
bhi _memcpy_src3_loop
_memcpy_src1_loop
mov r3,r12,lsr #8
ldr r12,[r1,#4]!
subs r2,r2,#4
orr r3,r3,r12,lsl #24
str r3,[r0],#4
bcs _memcpy_src1_loop
add r1,r1,#1
b _memcpy_lastbytes
_memcpy_src2_loop
mov r3,r12,lsr #16
ldr r12,[r1,#4]!
subs r2,r2,#4
orr r3,r3,r12,lsl #16
str r3,[r0],#4
bcs _memcpy_src2_loop
add r1,r1,#2
b _memcpy_lastbytes
_memcpy_src3_loop
mov r3,r12,lsr #24
ldr r12,[r1,#4]!
subs r2,r2,#4
orr r3,r3,r12,lsl #8
str r3,[r0],#4
bcs _memcpy_src3_loop
add r1,r1,#3
b _memcpy_lastbytes
__rt_memcpy_w
subs r2,r2,#0x20
stmfd r13!,{r4,r14}
bcc _memcpy_small
_memcpy_aligned_loop
ldmcsia r1!,{r3,r4,r12,r14}
stmcsia r0!,{r3,r4,r12,r14}
ldmcsia r1!,{r3,r4,r12,r14}
stmcsia r0!,{r3,r4,r12,r14}
subcss r2,r2,#0x20
bcs _memcpy_aligned_loop
_memcpy_small
movs r12,r2,lsl #28
ldmcsia r1!,{r3,r4,r12,r14}
stmcsia r0!,{r3,r4,r12,r14}
ldmmiia r1!,{r3,r4}
stmmiia r0!,{r3,r4}
movs r12,r2,lsl #30
ldmfd r13!,{r4,r14}
ldrcs r3,[r1],#4
strcs r3,[r0],#4
moveq pc,r14
_memcpy_lastbytes
movs r2,r2,lsl #31
ldrmib r2,[r1],#1
ldrcsb r3,[r1],#1
ldrcsb r12,[r1],#1
strmib r2,[r0],#1
strcsb r3,[r0],#1
strcsb r12,[r0],#1
mov pc,r14