【问题标题】:Why was SIGFPE used for integer arithmetic exceptions?为什么 SIGFPE 用于整数算术异常?
【发布时间】:2020-05-24 10:25:18
【问题描述】:

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

【问题讨论】:

  • 我正在查看这个特定的答案及其评论:stackoverflow.com/a/16929175/10678955
  • @root:这似乎是合理的,如果有人在这里输入这样的答案,如果没有提交更明确的答案,我可能会接受。我这里有一本 PDP-11 手册,索引确实只显示浮点处理器的异常。

标签: unix posix sigfpe


【解决方案1】:

IEEE Std 1003.1 Standard 将 SIGFPE 定义为:

算术运算错误。

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

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

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

【讨论】:

  • 这不是一个糟糕的推测,但您应该知道 x86 大约十年前的 影响了哪些信号用于什么。如果要对这个问题有一个答案,它可能在于 UNIX 最初开发的 1970 年代小型计算机的行为。
猜你喜欢
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
相关资源
最近更新 更多