私たちがよく知っているように、.NET はIntegerOverflow
整数がオーバーフローするたびに例外をスローします。これはとても良いことだと思います。
しかし、どうやってこれを速くするのだろうか。x86 は整数のオーバーフローをトラップしません。他のアーキテクチャでそれができるとしたら、私は驚きます。私が x86 で見つけた最善の解決策は、すべての算術演算の後に「INTO」命令を配置することです。しかし、それは顕著な減速につながると思います。
操作がオーバーフローできないことが証明できる場合は、コンパイラで静的チェックを行ってこれを回避できます。しかし、コンパイラが操作の結果を判断できない場合、パフォーマンスが重要な内部ループはどうなるでしょうか?
Mono のソースを見てみましたが、これらのチェックを行っている場所が見つかりませんでした。
それで、彼らが実際に何をしているのか、誰かが手がかりを持っていますか? 本当に知りたいです。
余談ですが、.NET JITC が出力する x86 コードを確認する方法はありますか?