DSP混合编程3

自己写的代码,还请大家指教!

#include <stdio.h>

extern int asmfunc(int *a,int *b);   //调用时要调用数组的地址

extern int a[2] = {1,2};
extern int b[2] = {1,2};

void main()
{
int result;

result = asmfunc(a,b);
printf("sum is %d/n",result);

}

 .global _asmfunc
      
_asmfunc:
  ;mvk .S   1,a2
  ;mvk .S   0,a1
  ;STW .D   a2,*+b14(_a)
  ;LDW .D   *b14(_a+4),a1
  ;LDW .D   *+b14(_a+4),a2
  mvk  .L 2,A1
  ZERO .L A7

|| ZERO .L B7

LOOP:   LDW  .D *A4++,A2  //访问数组 W是以字为单位
            NOP  4
            MVK  .S 12,A0
            STW  .D A0,*A4       //给数组赋值
       ||  LDW  .D *B4++,B2
       ||  SUB  .S A1,1,A1
           NOP  4
 
[A1] B    .S LOOP
             NOP  2
          add  .L B2,A2,A3     //跳转指令延迟5周期,这样提高并行
          MV   .L A3,A4

          B .S2 b3
          NOP 5

         .end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值