初学DSP 汇编问题(参数传递)

2019-03-26 16:38发布

刚入手DSP汇编,想编个简单的测试程序运行下,功能是:主函数中用C,调用汇编文件中的功能函数两数相乘 编译出错: [E0002] Illegal mnemonic specified,下面是2个源文件,请帮看下,谢谢! /*********main.c************/ #include <stdio.h> void main() {     int m,n,a;     m = 10;     n = 20;     a = MPY1(m, n);     printf("a=%d ",a); } /**********test.asm********/      .text     ..globle _MPY1   _MPY1:     .asg A0, A_m     .asg A2, A_n;      MV  .S1  A0, A6    MV  .S1  A2, A4     LD  .D1 *A4, A3   LD  .D1 *A6, A5       MPY .M1 A3, A5, A7     NOP 2     .end     上面就是源程序了,第一次写,也不知道该怎么传递参数m,n。。。哪位兄弟出来帮解答下   [ 本帖最后由 breeze505 于 2012-4-25 11:06 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
carrotchen
1楼-- · 2019-03-27 22:33
 精彩回答 2  元偷偷看……
breeze505
2楼-- · 2019-03-28 00:34

非常感谢!现在大概明白了参数的传递,但还有问题请教下:

1. 在Register Usage表里,A0-A9/B0-B9是Parent,A10-A15是Child的,这里是Parent和Child代表什么呢?是不是说Parent是用来传递参数,而Child是用来做函数里中间变量计算?

2. 按你的指导,我代码修改如下

 /*******main中*****/

void main()

 {

int n,m,result[2],tmp;

 m = 10;

n = 20;

tmp = MPY_1(m,n,result);

 printf("result=%d,tmp=%d",result[0],tmp);

}

/*****asm文件*****/

.text

 .global _MPY1

_MPY1:

 B .S2 B3

 MV .S1 A4, A0

 MV .S1 B4, A1

 MPY32 .M1 A0, A1, A7 ;m*n

STW .D1T1 A7, *+A6[0] ;把;m*n计算结果存到result中

MVK .S1 1, A4 ;返回1

NOP 2

 

但以上代码编译后执行结果:result = 0, tmp=1 为什么reslut不是想要得到的200呢,请帮忙看下

[ 本帖最后由 breeze505 于 2012-4-26 13:07 编辑 ]
carrotchen
3楼-- · 2019-03-28 01:32
 精彩回答 2  元偷偷看……
breeze505
4楼-- · 2019-03-28 06:59
明白了,非常感谢!

一周热门 更多>