アカウント名:
パスワード:
ゼロ除算の結果は未定義だから、例外投げて死のうが何らかのデフォルト値を返そうがコンピューターが爆発しようが任意コードが実行されようが鼻から悪魔が出ようが仕様上は何の問題もない。チェックが不要になるわけではないが。むしろ例外が投げられると期待してチェックをサボってはいけない(実際にx86に慣れたプログラマーがARMデバイスでよく踏む罠)。
> 逆に、符号付整数加算はオーバフロー例外投げることがありますので、> 通常は符号なし整数加算に変換されます
符号付整数加算がオーバーフロー起こしたときの動作も未定義ですよ。だから別に変換しなくても(例外投げて死んでも)規格上は問題ないです。例外投げて死んでくれれば整数オーバーフロー系のセキュリティホールはだいぶ減らせると思うんですけどねえ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
身近な人の偉大さは半減する -- あるアレゲ人
C言語なら (スコア:1)
ゼロ除算の結果は未定義だから、例外投げて死のうが何らかのデフォルト値を返そうがコンピューターが爆発しようが任意コードが実行されようが鼻から悪魔が出ようが仕様上は何の問題もない。チェックが不要になるわけではないが。むしろ例外が投げられると期待してチェックをサボってはいけない(実際にx86に慣れたプログラマーがARMデバイスでよく踏む罠)。
Re:C言語なら (スコア:1)
なので、アセンブラレベルで0除算か検査して例外出すように変換しています
逆に、符号付整数加算はオーバフロー例外投げることがありますので、
通常は符号なし整数加算に変換されます
アセンブラでコーディングすることを「ほぼ」前提としないMIPSならではの仕様はこのほかにもあります
Re: (スコア:0)
> 逆に、符号付整数加算はオーバフロー例外投げることがありますので、
> 通常は符号なし整数加算に変換されます
符号付整数加算がオーバーフロー起こしたときの動作も未定義ですよ。だから別に変換しなくても(例外投げて死んでも)規格上は問題ないです。例外投げて死んでくれれば整数オーバーフロー系のセキュリティホールはだいぶ減らせると思うんですけどねえ。