Verschil tussen Fase en Pass in Compiler

Fase versus doorgeven in compiler

Compiler is over het algemeen een computerprogramma dat een programma leest dat is geschreven in één taal, de brontaal, en vertaalt dit in een andere taal, die de doeltaal wordt genoemd. Traditioneel was de brontaal een taal op hoog niveau, zoals C ++, en de doeltaal was een taal op een laag niveau, zoals de assembleertaal. Compilers kunnen dus over het algemeen worden gezien als vertalers die van de ene taal naar de andere vertalen. Pass en Phase zijn twee termen die vaak worden gebruikt met compilers. Het aantal keren dat een compiler is gepasseerd, is het aantal keren dat het over de bron gaat (of een vorm van weergave ervan). Een compiler wordt opgesplitst in onderdelen voor het gemak van constructie. Fase wordt vaak gebruikt om zo'n enkel onafhankelijk onderdeel van een compiler aan te roepen.

Wat is een pass in een compileerprogramma??

Een standaardmanier om compilers te classificeren is door het aantal "passen". Meestal is compileren een relatief resource-intensief proces en aanvankelijk beschikten computers niet over voldoende geheugen om een ​​dergelijk programma te kunnen uitvoeren dat de volledige taak volbracht. Vanwege deze beperking van hardwarebronnen in vroege computers, werden compilers opgesplitst in kleinere subprogramma's die hun gedeeltelijke taak uitvoerden door de broncode te doorlopen (een "passage" over de bron of een andere vorm ervan gemaakt) en uitgevoerde analyse , transformaties en vertaaltaken afzonderlijk. Dus, afhankelijk van deze classificatie, worden compilers geïdentificeerd als composters met één of meerdere doorgangen.

Zoals de naam doet vermoeden, compileren compilers met één doorgang in een enkele doorgang. Het is gemakkelijker om een ​​one-pass-compiler te schrijven en ze presteren ook sneller dan compilers met meerdere passages. Daarom, zelfs op het moment dat u beperkte bronnen had, werden talen zo ontworpen dat ze konden worden gecompileerd in een one-pass (bijvoorbeeld Pascal). Aan de andere kant bestaat een typische multi-pass-compiler uit verschillende hoofdfasen. De eerste fase is de scanner (ook bekend als de lexicale analysator). Scanner leest het programma en converteert het naar een reeks tokens. De tweede fase is de parser. Het converteert de reeks tokens naar een ontleedboom (of een abstracte syntaxboom), die de syntactische structuur van het programma vastlegt. De volgende fase is de interpretatie van de semantiek van de syntactische structuur. De code-optimalisatiefasen en de uiteindelijke codegeneratiestap volgen dit.

Wat is een fase in een compileerprogramma??

De term fase komt vaak naar voren als je het hebt over de constructie van compilers. Oorspronkelijk waren compilers alle eenvoudige stukjes monolithische software die één persoon schreef voor het samenstellen van een eenvoudige taal. Maar toen de broncode van de te vertalen taal complex en groot werd, werd de compiler opgesplitst in meerdere (relatief onafhankelijke) fasen. Het voordeel van verschillende fasen is dat de ontwikkeling van de compiler kan worden verdeeld onder een team van ontwikkelaars. Bovendien verbetert het de modulariteit en hergebruik door toe te staan ​​dat fases worden vervangen door verbeterde of extra fasen (zoals verdere optimalisaties) die aan de compiler moeten worden toegevoegd. Het proces van het verdelen van de compilatie naar fasen werd geïntroduceerd door het PQCC (Production Quality Compiler-Compiler Project) aan de Carnegie Melon University. Ze introduceerden de termen front end, middle end en back end. De meeste compilers hebben ten minste twee fasen. Maar meestal bevatten het achterste en voorste uiteinde deze fasen.

Wat is het verschil tussen Phase en Pass in Compiler?

Fase en Pass zijn twee termen die worden gebruikt op het gebied van compilers. Een pass is een enkele keer dat de compiler de broncode of een andere weergave ervan passeert (doorloopt). Meestal hebben de meeste compilers ten minste twee fasen, het front-end en back-end genoemd, terwijl ze ofwel one-pass of multi-pass kunnen zijn. Fase wordt gebruikt om compilers te classificeren volgens de constructie, terwijl pass wordt gebruikt om compilers te classificeren op basis van hoe ze werken.