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.

[参考译文] 编译器:RPT 指令

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/566039/compiler-rpt-instruction

主题中讨论的其他器件:TMS320F28335

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

您好!

客户正在使用编译器5.2.11进行 TMS320F28335 2级优化。

编译后、他们发现指令 RPT 被创建、当将"指定 RPT 指令中的最大重复次数"留空或设置为0时。 如果设置了其他值、则不会在 asm 中创建 RPT。

两个问题:

1)为什么会像以前那样发生;

2) 2)在 RPT 期间、中断将被禁用;除了 RPT、是否有任何其他指令可以在执行期间禁用中断?

非常感谢。

BR、Jordan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将 RPT 阈值设置为0是一个特殊值、表示"无限"。 如果您希望阻止编译器生成任何 RPT 指令、则必须使用--no_rpt (或-mi)选项。

    很抱歉、我对 C28x 不是很熟悉、不知道哪些指令禁用中断。 您最好在微控制器论坛中提问。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢。

    有人能回答"在 RPT 期间、中断将被禁用;除了 RPT、还有其他指令可以在执行期间禁用中断吗?"?
    提前感谢。
    BR、Jordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    约旦、您好!

    我的理解是 RPT 指令是不间断的、因为它被视为一条指令、CPU 将在保存上下文并提取中断矢量之前完成当前指令的代码执行。 您可以看到与其他指令类似的行为、这些指令需要像分支那样的多个周期。

    惠特尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Whitney、
    是否有任何其他可不间断的指令?
    非常感谢。
    BR、Jordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    约旦、您好!

    这也适用于需要多个周期的其他指令。 分支指令是一个示例。 您可以参阅 CPU 和指令集 参考指南 、了解所有指令的周期计数。

    惠特尼

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

    Whitney、

    很抱歉、我让你感到困惑。 实际上、我想知道、如果有一些其他指令、会花费大量的 CPU 周期。

    客户的问题是、设置优化级别2后、生成了 RPT。 重复时间很长、大约为100次。 在 RPT 执行100次期间、ADC 中断无法及时处理。 这会破坏 PWM 频率。

    正常的指令周期对它们来说不是问题。

    非常感谢。

    BR、Jordan

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

    约旦、您好!

    好的、我明白了。 不可以、RPT 是唯一一个有可能在不被中断的情况下占用这么多周期的人。

    惠特尼