Other Parts Discussed in Thread:TMS320C6748
大家好,所用平台是TMS320c6748,
目前想在一个c文件中加入汇编指令,使用如下方式报错,请大家帮忙指点下
__asm
{
}//这种方式报错
//这种也报错
#asm
#endasm
//这种也报错
#pragma asm
#pragma endasm
我想实现的代码如下
for(i=0;i<100;i++)
{
sum += m * n;
}
这是原本的c代码,现在我想把这段c代码换成汇编实现,请我我的方法是哪里错误了?
谢谢
Shine:
如果只是嵌入汇编语句的话,可以用asm (" nop"); 把nop空指令换成其他汇编语句。
如果是要在c中调用汇编函数的话,可以参考下面编译器手册。
8.6.2 Accessing Assembly Language Functions From C/C++
www.ti.com/…/sprui04b.pdf
,
user4835762:
您好,我按照您的方法测试,源文件没有报错,我使用的方式是asm(“nop”);,但是在编译产生的asm文件里报错,错误如下
[E0002]Illegal mnemonic specified
抱歉,因为我不能传照片,不能复制粘贴源码,所以我尽可能描述我遇到的问题,希望能再给我建议
谢谢
,
Shine:
illegal mnemonic specified说明汇编语句有问题,请看一下汇编指令有没有写错。
,
user4835762:
您好 感谢您的回答 汇编代码如下
编译错误如下
汇编是按照手册编写的,请问是我汇编语法的错误?能否帮忙举例说明我的错误发生在哪?
谢谢
,
user4835762:
上一封发的图片看不见汇编代码如下
void func(short *m , short * n)
{asm("MVK .S1 100,A1ZERO .L1 A7LOOP:LDH .D1 *A4++,A2")
}以上为汇编代码报错误为illegal mnemonic specified
汇编是按照手册编写的,请问是我汇编语法的错误?能否帮忙举例说明我的错误发生在哪?
谢谢
,
Shine:
用asm的话,只能一句句写。一条指令对应一个asm("…");
,
user4835762:
一句一句写的意思是如下:
asm
(
"
MVK .S1 100,A1
"
);asm
(
"ZERO .L1 A7"
);asm
(
"LOOP:"
);asm
(
"LDH .D1 *A4++,A2"
);
}请问您说的一句一句只的是这样吗?或者您用我这个例子帮我按照正确的方式写一遍
谢谢
,
Shine:
是这样一句句写。指令是否正确,请对照下面的指令集。
www.ti.com.cn/…/sprufe8b.pdf
,
user4835762:
谢谢,我现在能够用汇编代码运行一层for循环求和,但是我不知道怎么传递c与汇编之间的变量,请问您有什么建议吗
谢谢
,
Shine:
建议写个.asm汇编文件,然后参考2楼编译器手册里的8.6.3 Accessing Assembly Language Variables From C/C++这个章节。
,
user4835762:
好的谢谢
,
Shine:
不客气~