您好,
我们的项目使用浮点计算,结果是我们需要检查溢出和下溢。 我尝试了包含<fenv.h>库,我可以验证该库是否是编译器核心库的一部分,但溢出和下溢异常不会被激发。 打开 FENV_ACCESS(ON)#pragma 也不起作用,CCS 发出警告,指出#pragma 无法识别。
我想知道是否有生成的中断向量,或者可能有一些寄存器标志可以被读取以检测溢出/下溢?
如果有用,则需要更多信息-使用的编译器是 TI v20.2.0.LTS。
谢谢你,
詹姆斯
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.
您好,
我们的项目使用浮点计算,结果是我们需要检查溢出和下溢。 我尝试了包含<fenv.h>库,我可以验证该库是否是编译器核心库的一部分,但溢出和下溢异常不会被激发。 打开 FENV_ACCESS(ON)#pragma 也不起作用,CCS 发出警告,指出#pragma 无法识别。
我想知道是否有生成的中断向量,或者可能有一些寄存器标志可以被读取以检测溢出/下溢?
如果有用,则需要更多信息-使用的编译器是 TI v20.2.0.LTS。
谢谢你,
詹姆斯
浮点状态和控制寄存器 具有以下标志,用于指示是否发生溢出或下溢以及其他一些浮点“错误”:
| [7] | IDC | 输入次法累积标志,重置为零 |
| [4] | IXC | 不准确的累计标志,重置为零 |
| [3] | UFC | 欠流累积标志,重置为零 |
| [2] | 运营中心 | 溢出累积标志,重置为零 |
| [1] | DZC | 除以零累计标志,重置为零 |
| [0] | 海委会 | 操作累积标志无效,重置为零 |
C15辅助控制寄存器 具有 IXC, OFC, UFC,IOC, DZC 和 IDC 位,可设置这些位以将 上述浮点“错误”传播到 FPU 信号
浮点异常处理 解释了 FPU 信号如何用于生成 VIM 中断。 在 TMS570LC4357 VIM 通道47上,FPU 中断。
我还没有测试浮点溢出/下溢的检测,但有一个现有项目测试了在 FPSCR 中生成浮点除数为零的设置 DZC 标志。 切·斯特-吉隆/E2E_Example_Projects·GitHub 中的 E2E 项目/HL_sys_main.c 包含一个修改,该修改说明在浮点除零时获得中断。 在第1次通过时,不启用中断,但在第2次和后续迭代上,将启用中断。
使用内联汇编器语句意味着代码不是生产质量,但可能会有所帮助。