Que signifie "Backpatching"?
Ce n' backpatching
veux dire ? Veuillez illustrer avec un exemple simple.
source d'informationauteur saplingPro
Vous devez vous connecter pour publier un commentaire.
Ce n' backpatching
veux dire ? Veuillez illustrer avec un exemple simple.
source d'informationauteur saplingPro
Vous devez vous connecter pour publier un commentaire.
Correctifs généralement se réfère au processus de la résolution de l'avant des branches qui ont été plantés dans le code, par exemple, au "si", états, lorsque la valeur de la cible est connue, par exemple, lorsque l'accolade de fermeture ou de contrepartie 'else' est rencontré.
Dans le code intermédiaire du stade de génération d'un compilateur, nous avons souvent besoin d'exécuter un "saut" instructions d'endroits dans le code qui n'existent pas encore. Pour traiter ce type de cas, une cible étiquette est insérée pour cette instruction.
Un marqueur non-terminal en question dans la règle de production provoque la sémantique de l'action de ramasser.
Backpaching est le processus de départ des entrées à blanc pour le goto enseignement de l'adresse cible est unkonown à l'avant de la transférer dans la première passe et de remplissage de ces inconnus lors de la seconde passe.
Backpatching:
La syntaxe dirigé définition peut être mis en œuvre dans deux ou plus de passes (nous avons synthétisé les attributs et les attributs hérités).
Construire l'arborescence de la première.
À pied de l'arbre en profondeur d'abord de l'ordre.
La principale difficulté de la génération de code en une seule passe, c'est que nous ne savons pas la cible d'une branche quand nous générer du code pour le flux d'instructions de contrôle
Backpatching est la technique pour contourner ce problème.
Générer les instructions de branchement avec vide cibles
Lorsque la cible est connue, remplissez l'étiquette des instructions de branchement (backpatching).
Certains états comme les instructions conditionnelles, tandis que, etc. sera représenté comme un tas de "si" et "goto" de syntaxe lors de la génération du code intermédiaire.
Le problème est que, Ces "goto" instructions n'ont pas de référence valide au début(quand le compilateur commence à lire le code source, ligne par ligne - A. K. Un 1er pass). Mais, après avoir lu le code source en entier pour la première fois, le étiquettes et références ces "goto"s sont pointant vers, sont déterminés.
Le problème, c'est que peut nous apporter le compilateur capable de remplir le X dans le "goto X" instructions en une seule passe ou pas?
La réponse est oui.
Si nous n'utilisons pas de backpatching, cela peut être réalisé par un 2 pass analyse sur le code source. Mais, backpatching nous permet de créer et de maintenir un liste séparée qui est exclusivement conçu pour les "goto" des déclarations. Puisqu'il est fait en une seule passe, la première passe ne sera pas remplir le X dans le "goto X" états parce que le comipler ne sais pas où X est au premier coup d'œil. Mais, il ne stocke le X dans cette liste exclusive, et après être passé par l'ensemble du code et de trouver la Xle X est remplacé par celui d'adresses ou de référence.
backpatching est un processus dans lequel le champ opérande d'une instruction contenant une référence vers l'avant est vide au départ. l'adresse du symbole de référence est mis dans ce domaine lors de sa définition est rencontré dans le programme.
Correctifs est l'activité de remplir l'une quelconque des informations d'étiquettes
par l'aide de la sémantique de l'expression au cours du processus de génération de code.
Il est fait par: