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:除以零和浮点异常

Guru**** 2563960 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/594227/tms320c6678-division-by-zero-and-floating-point-exception

部件号:TMS320C6678

你好
我的问题是,我们能否提供有关浮点例外和零处理除法的确认:-

 

请允许我列出以下先决条件:

  1. 我们需要捕获浮点(FP)异常(包括零分,溢出,下溢,非法操作等)

  2. 我们的平台软件不包含任何特定的风险FP操作,但外部链接库会执行此操作。

关于第2点,我的意思是,我们不能提前知道在哪里进行了划分,因为链接库的一部分是自动生成的。  

简单地说,我们需要在运行时拦截这种异常。

我们在论坛上提出了一些主题,结论是:

  1. 我们做了一些基本的基准测试,导致了故意的例外,并期望在FP控制寄存器中触发,但没有发生任何事情。 (参考为 springh7.pdf)

  2. 根据TI专家将0除以调用未定义的行为(可以 在此处检查论坛)

  3. 根据我们的理解,当发生fp-excep时,无法获得硬件中断。 在 Giovambattista的这篇文章中,我们得到了一个确认这一点的答复。 另一方面,已经确认在数学运算后应更新寄存器

 

在此链接中,您还可以找到Giovambattista提出的有关FP寄存器的另一个问题。

 

请验证之前的项目符号(2和3)吗? 也许我们做错了事。

 

提前感谢您的支持。

 

此致

Bob Bacon

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

    我已通知软件团队。 他们的反馈将直接发布在此处。

    此致,
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将这篇文章移到TI编译器论坛,他们可能更熟悉检测和避免这些情况的技术。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="Bob Bacon"]

    1. 根据TI专家将0除以调用未定义的行为(可以 在此处检查论坛)

    [/引述]

    只是为了澄清:这种讨论是指整数除以零。 浮点除以零应已定义行为和收益率+/-INF或nan。

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

    您好Markus

    这与涉及浮点和整数数据类型的所有算术运算有关。 除数为零,溢出和下溢等例外情况应包括在内。

     

    谢谢
    Bob Bacon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外,我确认两个测试(FP和整数除以零)都已执行,但我们无法检测到特定寄存器的任何更改
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="Bob Bacon"]

    ...

    1. 我们的平台软件不包含任何特定的风险FP操作,但外部链接库会执行此操作。

    ...

    1. 我们做了一些基本的基准测试,导致了故意的例外,并期望在FP控制寄存器中触发,但没有发生任何事情。 (参考为 springh7.pdf)

      ... 另一方面,已经确认在数学运算后应更新寄存器

    ...

    [/引述]

    以下引用了来自Sprui04a 8.6 .................................................................14的内容,如果调用库函数时发生此信息,您可能不需要执行一些额外的工作,就无法轻松获取此信息:

    浮点控制寄存器因函数调用或函数返回而未定义。 手段
    浮点控制寄存器中的数据是有效的,可以用C/C++代码读取,直到有一个功能
    CALL或函数返回。

    根据您构建基准性能测试的方式,这也许是您未看到按预期设置位的原因。

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

    Bob Bacon 说:
    我们需要捕获浮点(FP)异常(包括除以零,溢出,下溢,非法操作等)[/QUOT]

    遗憾的是,编译器没有支持此用例的功能。  Wiki文章 “TI编译器中的IEEE 754 Support” 一般性地讨论了浮点支持,并简要介绍了这一点。

    谢谢,此致,

    -George