Dans l'analyse du flux de données du compilateur, quelle est la différence entre une plage dynamique d'une variable et sa définition? Les deux semblent se rapporter à la même chose ...Plage en direct par rapport aux définitions d'atteinte
Répondre
Ce sont des choses très différentes, et je vous suggère de revenir en arrière et de relire les définitions qui vous ont troublés. Une définition d'atteinte d'une variable pour un point qui utilise la variable donnée doit être, entre autres choses, une définition de cette variable. La durée de vie d'une variable est la partie du programme dans laquelle elle peut être utilisée, qui inclut des éléments autres que des définitions, par exemple, la lecture.
Voir, par exemple, le 1986 dragon Livre, pages 534 (peut-être trop générale pour être utile) et 610.
définitions sont définies Reaching par rapport à un endroit particulier dans un programme. Par exemple, à la ligne 10, avec le code «a = b + c», il est utile que le compilateur connaisse la définition de «c» ou, en d'autres termes, réponde à la question «dans quelle affirmation la variable c acquiert-elle valeur qui peut atteindre la ligne 10? ".
La plage dynamique est définie par rapport à une variable. La plage dynamique de la variable c commence à partir de la définition de la variable c et va jusqu'à la prochaine définition de la variable (où la variable est tuée, ou définie comme une variable différente, si vous utilisez SSA), ou la fin de la scope (bloc, fonction ou programme) que la variable c existe.
Les deux concepts sont similaires, mais ils ne sont pas la même chose.
- 1. Hiérarchie d'objets par rapport aux instructions "case"
- 2. Accès direct aux cellules TableLayoutPanel
- 3. Moteur MATLAB par rapport aux bibliothèques créées par MATLAB Compiler?
- 4. Considérations de conception pour les employés par rapport aux utilisateurs
- 5. Exécution sécurisée de LogParser par rapport au journal IIS de production en direct?
- 6. Correctif et correctif par rapport à la version de maintenance par rapport au Service Pack par rapport à
- 7. Patch de fichier complet par rapport aux patchs delta
- 8. paires PHP valeur clé par rapport aux tableaux
- 9. Consignes d'utilisation: pointeurs partagés par rapport aux pointeurs normaux
- 10. Calculer les scores finaux dans un jeu par rapport aux scores précédents et aux autres joueurs
- 11. sélectionner la requête par plage
- 12. ASP.NET MVC - Entités ayant une logique intégrée par rapport aux services aux entreprises
- 13. AJAX validation d'email en direct (PHP)
- 14. Comment puis-je valider des documents par rapport aux schémas Schematron en Java?
- 15. Editeurs UML en direct
- 16. vidéos streaming en direct
- 17. Quels sont les inconvénients de l'accès direct aux éléments DOM par ID?
- 18. Regroupement par plage horaire dans Linq
- 19. Importer des définitions d'objets Spring
- 20. Accès direct aux événements de clavier sous OSX
- 21. Accès aux services Web de rapport SQL
- 22. En C#, est l'accès aux propriétés de l'objet actuel par this.XYZ considéré comme style pauvre par rapport à seulement XYZ
- 23. Faire en direct Clock javascript
- 24. Logging recherche en direct misses
- 25. Plage de dates de regroupement par semaine
- 26. SQL - Requête par plage de dates
- 27. Champ de validation jQuery par plage
- 28. Plage de dates En PHP?
- 29. définitions de fonction Rediriger en python
- 30. Executors.newCachedThreadPool() par rapport à Executors.newFixedThreadPool()
Pour ajouter à la réponse de @ Anthony. Live range dépend également de la partie du programme où la variable est utilisée. Si une variable est définie et utilisée plusieurs fois. Ensuite, pour une longue période du programme, il n'est pas utilisé jusqu'à ce qu'il soit tué. Je ne pense pas que la portée en direct devrait inclure la partie du programme où elle n'est pas utilisée. –
En retournant le graphe de flux de commande, une variable est considérée comme active entre une utilisation de cette variable et sa dernière définition (affectation) avant cette utilisation. C'est la gamme (def, use) pas la gamme (def, def). Une variable qui n'est jamais utilisée n'est pas considérée comme vivante, même si elle peut être définie un million de fois. –