- 739 名前:デフォルトの名無しさん mailto:sage [2018/05/12(土) 15:48:51.69 ID:PbE4ojLD0.net]
- >>716
通じたようで何より。 だからオーバーフローの検出はソフトウェアでは辛くて、通常はハードウェアのはずだ。 そしてその場合は割り込みとなり、Cの場合は割り込みハンドラにコードを書くことになる。 C++の場合は『そこから例外処理ルーチンまで引っ張ってきてくれるコード』をコンパイラが用意し、 ユーザーのcatchコードを実行する。つまり、上記『』内コードでラップされてる分だけ遅い。 (実際にはラップだけではなくスタックウォークも行うから相当遅いはずだが) なんだが、実際俺はゼロ割例外しか見てないからオーバーフローについてはよくは知らん。 ハードウェア的には上記の動作になる。 一般的にはオーバーフロー例外は出ない環境(無限大に貼り付けるだけ)で使うのではないかと。 Cではアホみたいにゼロ割チェックやってるよ。 これはC++でも同じだと思うが、C++erはやらないのが作法なのか? とはいえ、ゼロ割はCMP+Brachであり、通常は分岐しないから、x86ではほぼゼロコストだ。 割り込みは関数呼び出し自体が遅くなるから、結局これもCの方が速いはずだが。
|

|