正如我们都知道和喜爱的那样,IntegerOverflow
每次整数溢出时,.NET 都会引发异常。我认为这是一件非常好的事情。
但我想知道他们是如何做到这么快的。x86 不会捕获整数溢出,如果其他架构允许这样做,我会感到惊讶。我为 x86 找到的最佳解决方案是在每个算术运算之后放置一条“INTO”指令。但我认为这会导致明显的放缓。
他们可以在编译器中进行一些静态检查,以避免在可以证明操作不会溢出的情况下发生这种情况。但是当编译器无法确定操作的结果时,性能关键的内部循环会怎样呢?
我试图查看 Mono 源代码,但找不到他们进行这些检查的位置。
那么有人知道他们真正在做什么吗?我真的很想知道。
附带说明:有没有办法查看 .NET JITC 发出的 x86 代码?