wince系统下用arm汇编实现特定长度的memory拷贝函数,降低系统cpuloading

之前有做avin优化,降低cpu的使用率时。有用自己arm汇编来实现一个内存拷贝的函数,主要是用来替换原来驱动程序中memcpy函数。现在将源码贴在这里,怕自己以后遗忘。呵呵。1.知识要点:   arm汇编   arm体系架构下的apcs   vs2005的编译器不支持内嵌汇编,但可以编译arm汇编文件,生成obj文件。2.源代码:因为这个函数是为avin驱动专门写的,所以这个现在只支持长度是4字节倍数的拷贝。函数原型:void _avin_memcpy(unsigned char* dst,unsigne
摘要由CSDN通过智能技术生成

之前有做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   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值