【问题标题】:Division by zero in processor [closed]处理器中除以零[关闭]
【发布时间】:2021-07-30 00:26:06
【问题描述】:

处理器究竟如何处理这个除以零的条件?

在除法运算中会出现被零除的情况 除数结果为零,因为没有二进制表示 无穷。 ALU 无法处理。

不同的处理器有不同的处理方式吗? 我是这个话题的新手,互联网上的所有文章都与其他文章相矛盾。

【问题讨论】:

    标签: cpu-architecture integer-division


    【解决方案1】:

    这取决于 ISA。例如,x86 引发 #DE 异常(与商不适合一个寄存器时的除法溢出相同)。 ARM 没有错,您只需在目的地获得0Division by zero not causing runtime exception on Nvidia Jetson.

    (ARM 除法指令只有一个被除数 1 寄存器宽,不像 x86 中除数是除数或商的两倍宽。因此,ARM 除法只能在 INT_MIN/-1 上溢出,而不是被零除。 )

    就 ALU 而言,您必须构建一个对其进行检查并将其作为特殊情况进行处理的 ALU。 CPU的其余内部逻辑是做什么的

    (我假设您的意思是整数除法;FP 通常在屏蔽异常的情况下运行...)


    操作系统对除法异常的处理取决于操作系统。但如果它是类 Unix,它必须将 SIGFPE(算术异常)传递给有问题的进程。当然,那时它不再是 CPU 架构,而是软件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多