8

为什么要SIGFPE用于整数算术异常,例如除以零,而不是为整数算术异常创建单独的信号或首先为算术异常命名信号?

4

1 回答 1

1

IEEE Std 1003.1 标准将 SIGFPE 定义为:

算术运算错误。

并没有真正提到浮点运算。这背后的原因没有明确说明,但这是我的看法。

x86 FPU 可以使用诸如 等指令同时对整数和浮点数据进行操作FIDIV,因此不清楚将浮点数据除以整数零是否会产生浮点或整数点异常。

此外,高达 80486(与 ISO/ANSI C 标准同年发布)x86 CPU 根本没有浮点功能,浮点协处理器是一个单独的芯片。可以使用软件浮点仿真代替芯片,但使用 CPU 内置的 ALU(整数算术逻辑单元)会引发整数异常。

于 2020-02-11T13:38:25.087 回答