请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TMS320C6211B 工具/软件:Code Composer Studio
处理器系列数:TMS320C6ZXX。
IDE:代码编辑器3.3。
你好!
我试着写一个简单的程序:在数组中得到所有正元素的总和。 问题的第二部分是尽可能快地优化它
因此,我编写简单的程序:
.ref _c_int00;输入点 _c_int00: .data;代码部分 array1: int 3,-1,2,-99;数组 大小.set 4;数组大小 .text;代码 MVKL .S1 array1,A3;数组加载地址 А3 MVKH .S1 array1,A3 MVK .S1大小A2;数组加载地址到A2 MVK .S1 0,A0;正数组元素MVK .S2 0,B2的总和;来自数组的当前元素MVK S2 0,B0 环: SUB .L1 A2,1,A2;A2:= A2 -1 LDW .d1 *A3[A2],B2;将数组的电流元素加载到B2 NOP 4 CMPGT .L2 B2.0,B0; 搜索数组 NOP 6的正元素 [B0]Add .L1 B2,A0,A0;求和数组 NOP 5 的正元素[A2]B .S1循环;如果A2<>0转到 NOP 5
它运行良好,但 循环次数太多。
因此,我使用 平行传送机(或 混合执行命令)。
并写入程序的第二个版本,但(这是我的错)它现在不能正常工作。 但这并不重要,因为我无法优化它。
下面是程序的第二个版本:
.ref _c_int00;输入点 _c_int00: .data;数据部分 array1: 1,6,-2,-1,-1,-1,-1,-1,-1,-1 ,-1,-1,-1,-1 ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;数组大小.set 24;数组.text的数组.text;代码段MVS2 ,b1,b1,b1,b1, s1,s1,s1,s1,s1数组数组.b1,b1,b1,b1 B3 [B2]B .S1 loop LDW .d1 *A3++,B3 [B2]B .S1 loop LDW .d1 *A3++,B3 loop: [B2] Add .S2 -1,B2,B2 ||[B0]Add .L1 B3,A4,A4 || CMPGT .L2 B3,0,B0 || LDW .D1 *A3++, B2,如果要加载B2<b2|b2,则回路
如何使程序的第二个版本更快?
我的朋友说,这个项目应该有30个周期 ,等等。
我无法针对此周期数进行优化。
可以帮帮我吗?
附注:一个想法是 将数组分成2,并同时迭代数组的各个部分,但我不知道如何对其进行编程。
谢谢!