微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在处理器中除以零

如何解决在处理器中除以零

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

除以零条件发生在除法运算中 除数结果为零,因为没有二进制表示 无穷。 ALU 无法处理。

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

解决方法

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

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

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

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


操作系统如何处理除法异常取决于操作系统。但是如果它是类 Unix,它必须向违规进程提供 SIGFPE(算术异常)。当然,那时它不再是 CPU 架构,而是软件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。