TI中文支持网
TI专业的中文技术问题咨询交流网站

如何在.c文件中,嵌入汇编代码

大家好,所用平台是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:

回复 Shine:

您好,我按照您的方法测试,源文件没有报错,我使用的方式是asm(“nop”);,但是在编译产生的asm文件里报错,错误如下

[E0002]Illegal mnemonic specified

抱歉,因为我不能传照片,不能复制粘贴源码,所以我尽可能描述我遇到的问题,希望能再给我建议

谢谢

Shine:

回复 user4835762:

illegal mnemonic specified说明汇编语句有问题,请看一下汇编指令有没有写错。

user4835762:

回复 Shine:

您好    感谢您的回答   汇编代码如下

编译错误如下

汇编是按照手册编写的,请问是我汇编语法的错误?能否帮忙举例说明我的错误发生在哪?

谢谢

user4835762:

回复 Shine:

上一封发的图片看不见汇编代码如下

void func(short *m , short * n)
{asm("MVK .S1 100,A1ZERO .L1 A7LOOP:LDH .D1 *A4++,A2")
}

以上为汇编代码报错误为illegal mnemonic specified

汇编是按照手册编写的,请问是我汇编语法的错误?能否帮忙举例说明我的错误发生在哪?

谢谢

Shine:

回复 user4835762:

用asm的话,只能一句句写。一条指令对应一个asm("…");

user4835762:

回复 Shine:

一句一句写的意思是如下:

asm
(
"
MVK .S1 100,A1
"
);

asm
(
"ZERO .L1 A7"
);

asm
(
"LOOP:"
);

asm
(
"LDH .D1 *A4++,A2"
);
}

请问您说的一句一句只的是这样吗?或者您用我这个例子帮我按照正确的方式写一遍

谢谢

Shine:

回复 user4835762:

是这样一句句写。指令是否正确,请对照下面的指令集。
www.ti.com.cn/…/sprufe8b.pdf

user4835762:

回复 Shine:

谢谢,我现在能够用汇编代码运行一层for循环求和,但是我不知道怎么传递c与汇编之间的变量,请问您有什么建议吗

谢谢

Shine:

回复 user4835762:

建议写个.asm汇编文件,然后参考2楼编译器手册里的8.6.3 Accessing Assembly Language Variables From C/C++这个章节。

赞(0)
未经允许不得转载:TI中文支持网 » 如何在.c文件中,嵌入汇编代码
分享到: 更多 (0)