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.

[参考译文] 编译器/TMS320C6678:编译器差异版本7.4.24和7.6.0

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/738993/compiler-tms320c6678-compiler-differences-version-7-4-24-and-7-6-0

器件型号:TMS320C6678

工具/软件:TI C/C++编译器

您好!

使用上述版本进行编译时、我会得到不同的反汇编代码(使用7.4.24版本时-我得到了所需的结果)。  

它仅在优化(-o3)时发生。

以下代码似乎有问题:

void func1 (short* as16Tmp1、short* ps16Pnt、short* ps16CoefPnt、short Len)
{
short i;
__int40_t i40Temp0;
for (i = 0;i < Len;i ++)
{
i40Temp0 =(ps16CoefPnt[i]<]<tmp1;
i401_ iDs_i_imp1
;(tmp1) as16Tmp1[14]、ps16Pnt[-2-i]);
mIMacDSS__(i40Temp0、as16Tmp1[13]、ps16Pnt[-3-i]);
mIMacDSS__(i40Temp0、as16Tmp1[12]、ps16Pnt[-4-i]);
mIMacDSS__(i40Temp0、as16Tmp1[11]、 ps16Pnt[-5-i]);
mIMacDSS__(i40Temp0、as16Tmp1[10]、ps16Pnt[-6-i]);
mIMacDSS__(i40Temp0、 as16Tmp1[9]、ps16Pnt[-7-i]);
mIMacDSS__(i40Temp0、as16Tmp1[8]、ps16Pnt[-8-i]);
mIMacDSS__(i40Temp0、as16Tmp1[7]、ps16Pnt[-9-i]);
mIMacDSS__(i40Temp0、as16Tmp1[6]、 ps16Pnt[-10-i]);
mIMacDSS__(i40Temp0、as16Tmp1[5]、ps16Pnt[-11-i]);
mIMacDSS__(i40Temp0、 as16Tmp1[4]、ps16Pnt[-12-i]);
mIMacDSS__(i40Temp0、as16Tmp1[3]、ps16Pnt[-13-i]);
mIMacDSS__(i40Temp0、as16Tmp1[2]、ps16Pnt[-14-i]);
mIMacDSS__(i40Temp0、as16Tmp1[1]、 ps16Pnt[-15-i]);
mIMacDSS__(i40Temp0、as16Tmp1[0]、ps16Pnt[-16-i]);

ps16CoefPnt[i]= mSatSD__((i40Temp0 + 0x4000)<< 1);
}

mIMacDSS 和 mSatSD 定义为:

#define mIMacDSS__(DOp1、SOp2、SOp3)((DOp1)+=(_int40_t)(((SOp2)*(SOp3)))
#define mSatSD__(DOp1)(_sat (DOp1)>> 16)

此外、还使用了以下编译器标志:

-mv6600 --abi=eabi -O3 -g --relaxed_ansi --quiet --diag_warning=225 --diag_wrap=off --no_bad_aliases --mem_model :data=far -k --obj_directory="Obj"--"../Source/EC/temp_src.c
'完成的建筑:./Source/EC/temp_src.c

看起来、如果我使用7.6.0版本进行编译、则第一个乘法(mIMacDSS__)是使用未初始化的寄存器完成的。

BTW、该问题也与版本8.2.4有关。

提前感谢、

Shay。

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

    总之、我无法重现问题。

    [引用 user="Shay Karuchi"]如果我使用7.6.0版本进行编译,看起来就像这样[/引用]

    编译器版本7.6.0已使用4年以上。  并且它至少2年没有得到支持。  我很高兴看到...

    Shay Karuchi 说:
    问题也与版本8.2.4有关。

    我尝试重现8.2.4版的问题。  我找了这家……

    [引用 user="Shay Karuchi"]第一个乘法(mIMacDSS__)是使用未初始化的寄存器完成的。

    我找不到。  您到底是通过什么来发现这个问题的?  您确切地知道它是如何发生的?

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我在 PC 仿真上使用了相同的代码、针对某些输入获得了不同的结果(ps16CoefPnt)。
    我很快会尝试提供更多信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请提供所需的信息、说明您如何查看未初始化的寄存器的问题。

    谢谢、此致、

    乔治

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

    因为已经有一段时间了,我想你已经解决了这个问题。  非常感谢您的解决。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    很抱歉、我的信息延迟提供、我休假了。
    我很快将添加请求的信息。
    Shay。