コンパイラのデータフロー分析では、変数の有効範囲と定義に達していますか?両方とも同じことを指しているようです...ライブレンジと定義の比較
4
A
答えて
2
これは非常に異なるものです。私は、あなたが混乱してしまったあなたに戻って再読することをお勧めします。与えられた変数を使用するポイントの変数の到達定義は、とりわけ、その変数の定義でなければなりません。 変数の存続期間は、プログラムを使用できる部分です。定義以外のもの(例えば、読み込み中)が含まれます。
を参照してください、例えば、1986ドラゴンブックは、ページ534(おそらく、あまりにも一般的には有用であること)と610
3
到達定義は、プログラム内の特定の場所に関連して定義されています。たとえば、コード "a = b + c"の10行目では、コンパイラが "c"の到達定義が何であるかを知ることができます。つまり、変数cがどの文でライン10に到達できる値? "
ライブ範囲は変数に対して定義されます。変数cの有効範囲は、変数cの定義から始まり、変数の次の定義(変数が強制終了される場所、またはSSAを使用する場合は別の変数として定義されます)、または変数cが存在する範囲(ブロック、関数、またはプログラム)。
2つの概念は似ていますが、同じものではありません。
関連する問題
- 1. ループバックモデルの定義とjson-schemaの比較
- 2. NSNumberの値と定義済みのintとの比較
- 3. GL_GLEXT_PROTOTYPESの定義と関数ポインタの取得の比較
- 4. SQLユーザー定義関数とストアドプロシージャの分岐の比較
- 5. メソッドReturnTypeと定義済みの型を比較する方法
- 6. ブーストヒープユーザー定義の比較関数を設定する
- 7. クラスの__cmp__を定義しないPythonオブジェクトの比較
- 8. C#デリゲート定義 - 匿名メソッドと正式に定義されたメソッドとの比較
- 9. フィボナッチヒープの比較関数を定義します。
- 10. 比較条件と比較条件
- 11. Googleアナリティクスとリアルタイムアナリティクスの比較:ChartbeatとClickyとMixpanelの比較
- 12. カウントループと比較
- 13. コピーデータと比較
- 14. OrElseとの比較
- 15. MySQLの比較と '%'
- 16. ViewStateとクッキーとの比較対キャッシュの比較
- 17. モンテカルロ法と進化的アルゴリズムの比較と比較
- 18. BufferedOutputStreamとByteArrayOutputStreamとの比較
- 19. IDeserializationCallbackとOnDeserializedAttributeとの比較
- 20. iosとjsonとの比較
- 21. DataSourceUtils.getConnectionとDataSource.getConnectionとの比較
- 22. NullReferenceExceptionとMSILとの比較
- 23. FuzzyとSeleniumとの比較
- 24. Display.asyncExecとDisplay.timerExecとの比較
- 25. HttpContextとHttpListenerContextとの比較
- 26. AXとゼロとの比較
- 27. File.Delete()とFileInfo.Delete()との比較
- 28. PHPとWordPressとの比較
- 29. ELとequalIgnoreCaseとの比較
- 30. VB.NETでのデータ構造の選択と比較の比較
@ Anthonyの答えに追加します。ライブレンジは、変数が使用されているプログラムの部分にも依存します。変数が定義されてから数回使用される場合。それから、プログラムの長い範囲では、殺されるまでは使用されません。ライブの範囲には、使用されていない部分のプログラムを含めるべきではないと思います。 –
crontrolフローグラフを後方に移動すると、その変数を使用する前にその変数と最後の定義(割り当て)の間で変数が生きていると見なされます。範囲(def、def)でない範囲(def、use)です。一度も使われていない変数は、何百万回も定義されていても、生きているとはみなされません。 –