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/TMS320F2.8035万:CCS/TMS320F2.8035万:在ACC和P寄存器上的操作将它们用作16位而不是32位

Guru**** 2555630 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/632473/ccs-tms320f28035-ccs-tms320f28035-operation-on-acc-and-p-registers-used-them-as-16-bits-instead-of-32-bits

部件号:TMS320F2.8035万

工具/软件:Code Composer Studio

您好,

我对这部分代码有问题:

静态void函数InError(SEC_checkErrorType_e错误,
       sec_tmpErrors_s *tmpErrorVar, uint16_t checkIndex,
       Bool autosResetError)

   UINT32_t掩码;

   //用于重置错误的计算掩码
   掩码= 1UL <<检查索引;
   掩码=(UINT32_t)~((UINT32_t)掩码);

}

掩码为UINT32_t 我尝试将每个元素类型转换为UINT32_t,但结果始终相同。

我希望行 掩码=(UINT32_t)~((UINT32_t)掩码);更改所有位,但只更改16个较低的位。 我不明白为什么。

这是不可拆卸的代码:

  71        mask = 1UL << checkIndex;
3f4056:  0201       MOVB        ACC,#1
3f4057:  563B       LSLL        附件,T
3f4058:  FF55       不         符合
3f4059:  FF5A       MOVL        P,符合

当我处于调试模式时,ACC和P寄存器都正常(0xFFFFFFFE),但掩码不是(0x0000FFFE)。 在“表达式”窗口中,掩码地址为Register PL。 为什么?

我使用编译器v.17.3 .0。 使用O2优化水平。

我没有进行优化,但效果很好。 那么如何继续进行O2优化水平呢?

e2e.ti.com/.../essai.zip

提前感谢。

Helene

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

    当我处于调试模式时,ACC和P寄存器都正常(0xFFFFFFFE),但掩码不是(0x0000FFFE)。 在“表达式”窗口中,掩码地址为Register PL。 为什么?[/QUOT]

    问题可能仅出现在Code Composer Studio (CCS)中,而不是编译器生成的代码中。  当您一直运行代码时,结果是否错误?  是否可能只有表达式窗口错误?

    谢谢,此致,

    -George

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

    感谢您的回答。

    这只是我的代码的一部分,但对于整个代码,我在运行时遇到了问题,而没有去扣具程序。 这是我在调试模式下进行此操作的原因,以了解结果错误的原因。

    此致,

    Helene

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

    因此,您在整个应用程序中看到的结果是错误的,而不是在其截面中看到的结果。  您知道计算错误结果的函数吗?  如果是这种情况,请仅对包含该功能的文件进行测试。  按照文章 How to Submit a Compiler Test Case中的说明进行操作。  此外,指明有问题的函数的名称。  或者,在此处添加注释//问题。

    谢谢,此致,

    -George

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

    很抱歉,我的信息似乎不清楚。

    我在调试模式中复制了错误的结果并发布了示例。 在调试模式下, 对示例发布和完整应用执行相同。

    结果错误的函数称为FunctionInError。

    此致,

    Helene