アカウント名:
パスワード:
-- C++ でプログラムを書いていて、C++ レベルでは間違っていないはずなのに動作がおかしいという事があり、アセンブリ言語(≒マシン語)レベルで調べてみると、コンパイラ(Visual C++ 6.0)の最適化処理がバグってた…orz
Matrix4x4(const double m[]) { for ( int i = 0; i < 16; ++i ) M[i] = m[i];}
コンパイラのバグなんて珍しいものではないし、それの確認にアセンブリ言語の知識が役立つというのには異論はないのですが、あなたの前のコメント [srad.jp]を見るとあなたの技術者としての力量に疑問が沸くので再現できるコードを示して下さらないとそのケースについてはちょっと判断できません。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
身近な人の偉大さは半減する -- あるアレゲ人
必要性を感じた時~♪ (スコア:3, 興味深い)
--
C++ でプログラムを書いていて、C++ レベルでは間違っていないはずなのに動作がおかしいという事があり、アセンブリ言語(≒マシン語)レベルで調べてみると、コンパイラ(Visual C++ 6.0)の最適化処理がバグってた…orz
例によってそれは仕様 (スコア:1)
デフォルトで/O2が指定されているのはたぶんトラップだと…
Re:例によってそれは仕様 (スコア:1)
それに、処理順序がおかしくなるならわからないでもないですが(許せませんが)、メモリ破壊を起こすコードを生成するんですよ…
Re:例によってそれは仕様 (スコア:1)
このURLの、コードの最適化について、あたりかなぁ…
VC++6.0の頃とは微妙に内容が変わってるけど、同じような注意が書かれていたはず。
当時のMSDNは『お勧めします』みたいな書き方でなくて、テストしてから指定するべき、みたいな書きようだったように記憶していたのですが、自分の脳みそもメモリ破壊してるらしく、このドキュメントと一言一句同じだったような気もしてきた…
もし手元にMSDN October 2001があったらご確認ください。うろ覚えで申し訳ないです。
Re:例によってそれは仕様 (スコア:0)
Re:例によってそれは仕様 (スコア:0)
こないだgccでバグ踏んだけど、ポインタの最下バイトが特定の条件下でゼロクリアされる嫌らしいトラップだったし。
最適化を切って確認は基本でしょ。
Re:例によってそれは仕様 (スコア:1)
Re:例によってそれは仕様 (スコア:0)
「一見正しいけど実は未定義動作になるコードで、最適化の有無によって振る舞いが変わる」
のを踏んだだけだったりしません?
#前に踏んだことがあるんだけど、、、詳細が思い出せないのでAC。orz
Re:例によってそれは仕様 (スコア:1)
# 再現コードを載せようとしたけど"postercomment"圧縮テストに引っかかって、載せられませんでした。
Re:例によってそれは仕様 (スコア:0)
コンパイラのバグなんて珍しいものではないし、それの確認にアセンブリ言語の知識が役立つというのには異論はないのですが、あなたの前のコメント [srad.jp]を見るとあなたの技術者としての力量に疑問が沸くので再現できるコードを示して下さらないとそのケースについてはちょっと判断できません。