之前有做avin优化,降低cpu的使用率时。有自己用arm汇编来实现一个内存拷贝的函数,主要是用来替换原来驱动程序中memcpy函数。现在将源码贴在这里,怕自己以后遗忘。呵呵。
1.知识要点:
arm汇编
arm体系架构下的apcs
vs2005的编译器不支持内嵌汇编,但可以编译arm汇编文件,生成obj文件。
2.源代码:
因为这个函数是为avin驱动专门写的,所以这个现在只支持长度是4字节倍数的拷贝。
函数原型:void _avin_memcpy(unsigned char* dst,unsigned char *src,unsigned int length);
;;benson_20110315 modify for avin T_fpga_fw
INCLUDE kxarm.h
TEXTAREA
LEAF_ENTRY _avin_memcpy
stmfd sp!, {r4 - r11}
and r3,r2,#31
mov r2,r2,LSR #5
cmp r2,#0
beq %F2
1
ldmia r1!, {r4 - r11}
stmia r0!, {r4 - r11}
subs r2, r2, #1
bne %B1
2
add pc, pc, r3
b MEMCPY_END ;0*4
b MEMCPY4 ;1*4
b MEMCPY8 ;2*4
b MEMCPY12 ;3*4
b