为什么SIGFPE用于整数算术异常,例如除以零,而不是为整数算术异常创建单独的信号或通常首先为算术异常命名信号?
小智 1
IEEE Std 1003.1 标准将 SIGFPE 定义为:
错误的算术运算。
并且并没有真正提到浮点运算。这背后的原因并没有明确说明,但这是我的看法。
x86 FPU 可以使用诸如 之类的指令同时对整数和浮点数据进行操作FIDIV,因此不清楚浮点数据除以整数零是否会产生浮点或和整数点异常。
此外,直到 80486(与 ISO/ANSI C 标准同年发布)的 x86 CPU 根本没有浮点功能,浮点协处理器是一个单独的芯片。软件浮点模拟可以用来代替芯片,但是使用 CPU 内置的 ALU(整数算术逻辑单元),这会抛出整数异常。