Fase versus doorgeven in compiler
Over het algemeen is een compiler een computerprogramma dat een programma leest dat is geschreven in de ene taal, de brontaal genoemd, en het vertaalt in een andere taal, de doeltaal. Traditioneel was de brontaal een taal op hoog niveau, zoals C ++ en de doeltaal was een taal op laag niveau, zoals de assembleertaal. Over het algemeen kunnen compilers dus 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 passages van een compiler is het aantal keren dat het over de bron gaat (of een vorm van representatie ervan). Een compiler wordt voor het gemak van de constructie in onderdelen opgesplitst. Phase wordt vaak gebruikt om zo'n enkel onafhankelijk onderdeel van een compiler aan te roepen.
Wat is een pas in een compiler?
Een standaardmanier om compilers te classificeren is door het aantal "passages". Meestal is compileren een relatief arbeidsintensief proces en aanvankelijk hadden computers niet genoeg geheugen om een dergelijk programma vast te houden dat de volledige klus deed. Vanwege deze beperking van hardwarebronnen in vroege computers, werden compilers opgesplitst in kleinere subprogramma's die hun gedeeltelijke werk deden door de broncode te doorzoeken (een "pass" over de broncode of een andere vorm ervan gemaakt) en analyse uit te voeren, transformaties en vertaaltaken afzonderlijk. Dus, afhankelijk van deze classificatie, worden compilers geïdentificeerd als one-pass of multi-pass compilers.
Zoals de naam al doet vermoeden, compileren one-pass-compilers in één keer. Het is gemakkelijker om een one-pass compiler te schrijven en ze presteren ook sneller dan multi-pass compilers. Daarom werden talen zelfs in de tijd dat u beperkte middelen had, zo ontworpen dat ze in één keer konden worden gecompileerd (bijv. Pascal). Aan de andere kant bestaat een typische multi-pass-compiler uit verschillende hoofdfasen. De eerste fase is de scanner (ook wel de lexicale analysator genoemd). De 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 syntaxisboom), die de syntactische structuur van het programma vastlegt. De volgende fase is de interpretatie van de semantiek van de syntactische structuur. Hierna volgen de fasen voor codeoptimalisatie en de laatste fase van het genereren van code.
Wat is een fase in een compiler?
De term fase komt vaak naar voren als je het hebt over compilerconstructie. Aanvankelijk waren de compilers alle simpele stukjes enkele, monolithische software die door één persoon was geschreven 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 over een team van ontwikkelaars. Bovendien verbetert het de modulariteit en het hergebruik door fasen te laten vervangen door verbeterde of aanvullende fasen (zoals verdere optimalisaties) die aan de compiler kunnen worden toegevoegd. Het proces van het verdelen van de compilatie in 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 kapselen back-end en front-end deze fasen in.
Wat is het verschil tussen Phase en Pass in Compiler?
Phase 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, front-end en back-end genaamd, terwijl ze zowel one-pass als multi-pass kunnen zijn. Fase wordt gebruikt om compilers te classificeren op basis van de constructie, terwijl pass wordt gebruikt om compilers te classificeren op basis van hoe ze werken.