This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320C6211B:如何尽可能优化正元素的程序总和?

Guru**** 660250 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/662125/ccs-tms320c6211b-how-to-optimize-program-sum-of-positive-elements-as-possible

部件号: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,并同时迭代数组的各个部分,但我不知道如何对其进行编程。

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    我会将此线程移到编译器论坛。 那里的专家可以为您提供最好的帮助。

    谢谢
    KI
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您用C代码重写此函数,并让编译器对其进行优化。 如果编译器生成的代码不够好,查看编译器如何优化它将帮助您学习编写更快汇编代码的技术。