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

针对C6748芯片编写C代码和汇编代码混合实现功能

大家好:

最近一段时间在做流水线优化的内容,查找资料 TMS320C6000 Programmar;s Guide数据手册,在手册中有一个例子5-28,该例子是针对for循环的描述,通过汇编实现for循环并且减少循环次数,我将这个例子编写成.asm文件(仿照SYSBIOS文件中相关的汇编文件格式编写),在测试中发现不能正确运行,会出现运行到exit函数中的现象,

代码如下:

上述四个图片是完整的代码。

我现在想请教的问题是,为什么会汇编代码执行到108行的时候会直接运行到exit函数中,是因为.asm文件的格式不准确吗?还是说在代码设计上本身是存在逻辑上的问题(代码是将例子5-28完全copy,没做任何修改)?查找论坛中其他人的帖子,也找了很多数据手册,尝试很多种修改方法,没有解决这个问题,求解答!!!!

Shine:

请问执行到哪一句汇编语句会跳转到exit函数中?单步跟踪一下查看一下各个寄存器状态和传递的参数是否正确?

Tony Tang:

建议阅读相关文档:

spru198K第5章。跳到exit一般来说是出现了exception。data exception 或instruction exception.

另外相关文档 SPRU187:

一般来说,没有必要从0开始写汇编,这需要对CPU架构的深入了解,建议基于C代码进行优化。

这里有比较全面的优化资料汇总:

优化视频教程:

user4835762:

回复 Shine:

你好,在单步调试中发现在汇编代码走到99行的时候,在做完加的操作之后,会直接进入到exit函数的汇编中,现象是通过反汇编窗口调试看到的。我现在优点怀疑是寄存器在使用完成后没有做到保护,导致的,但是在查找资料中发现A4和B4寄存器没有提到说保护这种说法。

user4835762:

回复 Tony Tang:

您好:

      我想咨询下,上图中的线性汇编在CCS6.2的编译中进行编写,在编译时会出现错误,对于这样的错误是不是需要在工程属性中勾选什么内容,编译器才会识别这样的汇编文件。

赞(0)
未经允许不得转载:TI中文支持网 » 针对C6748芯片编写C代码和汇编代码混合实现功能
分享到: 更多 (0)