C ++& GCC:GCC的C ++实现如何处理除零?

时间:2009-09-30 09:39:10

标签: c++ gcc compiler-construction

出于兴趣。 GCC的C ++实现如何处理标准数字类型除以零? 也有兴趣了解其他编译器如何在零分割方面工作。 随意详细说明。 这不仅仅是为了娱乐,因为它与单一的任务半关联。

干杯,Chaz

1 个答案:

答案 0 :(得分:9)

没有。通常发生的情况是,当除法指令的操作数为0时,CPU将抛出某种类型的内部异常,这将触发一个中断处理程序,该处理程序读取CPU上各种寄存器的状态并处理它,通常是通过转换它被发送回发送给程序并由任何注册信号处理程序处理的信号。对于像操作系统这样的大多数unix,它们都会获得SIGFPE。

虽然行为可能会有所不同(例如,在某些CPU上,您可以告诉CPU不要引发异常,通常它们只是将一些钳位值设置为0或MAXINT),这种变化通常是由于操作系统的差异, CPUm和运行时环境,而不是编译器。