if で弾かれた直後 else if を評価する間の一瞬のタイミングで a が化けたのを検出するということなのでしょうか? それが問題になるような確率で発生するのであれば この if 文全体の前後でかなり高確率で化けてるでしょうし、 それよりもはるかに大きな確率でロジック自体のバイナリがダメージを受けてる気がするのですが? 例えば a == 1 の 1 や a != 1 の 1 が化けてたり、je が jne に化けてたり
仮に a の値化けを検出するにしても a = b = 0; のように値を別の変数にも複製しておいて if (a && a == b) { ... } else if (!a && a == b { ... } else { エラー } とした方が実用的なのでは?
普通にやりませんか? (スコア:1)
制御機器のプログラムだと、物理メモリアクセスに対して常時パリティチェックをかけるような専用タスクが走らせるのは
ごく普通にありますよ。
あと、たとえば
if a==1 {
// aが1のとき
func_1();
} else if a!=1 {
// aが1以外のとき
func_2();
} else {
// 正常ならここは通らないはず
kick_NMI();
}
などというコーディ
このコードの意図が理解できない (スコア:2, 興味深い)
if で弾かれた直後 else if を評価する間の一瞬のタイミングで
a が化けたのを検出するということなのでしょうか?
それが問題になるような確率で発生するのであれば
この if 文全体の前後でかなり高確率で化けてるでしょうし、
それよりもはるかに大きな確率でロジック自体のバイナリがダメージを受けてる気がするのですが?
例えば a == 1 の 1 や a != 1 の 1 が化けてたり、je が jne に化けてたり
仮に a の値化けを検出するにしても
a = b = 0;
のように値を別の変数にも複製しておいて
if (a && a == b) { ... }
else if (!a && a == b { ... }
else { エラー }
とした方が実用的なのでは?
uxi
Re:このコードの意図が理解できない (スコア:1)
サンプルコードが(擬似コードで)言いたい事のわりにはしょってるのでコメントが伸びているような。
想像するに、RAMは化ける可能性があるけどROMやCPUはハード的に保護して信頼性高くしてあって、というようなシステムのようだけど、RAMから呼んだ値はレジスタに置いて if 文を通るようにコーディングするんではないかな。普通ならやれることもできない、あれこれ制約されたコーディング規約もついて。
もしCPU/ROMもずっこけるというのなら、同一構成のシステム複数で多数決するとかなんとかしてやるだろうからif文でどうこうという話にはならないだろうし。
Re: (スコア:0)
・信頼できないデータを読んですぐ分岐するというのが理解できない
・もしa==1とa!=1でaを二回読んで欲しいというのなら、オプティマイズがどうのというのが理解できない