Verschil tussen fase en pas in compiler

Anonim

Fase versus Pass in Compiler

In het algemeen is compiler een computerprogramma dat een programma geschreven in een taal, die de brontaal heet, en vertaalt het 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 met een laag niveau, zoals Assembly Language. Dus in het algemeen kunnen compilanten worden gezien als vertalers die vertalen van de ene taal naar de andere. Pass en fase zijn twee termen die vaak worden gebruikt bij compilers. Aantal passen van een compiler is het aantal keren dat het over de bron gaat (of een vorm van representatie ervan). Een compiler is afgebroken in onderdelen voor het gemak van de bouw. Fase wordt vaak gebruikt om zo een zelfstandig deel van een compiler te bellen.

Wat is een Pass in een Compiler?

Een standaard manier om compilers te classificeren is door het aantal "passes". Gewoonlijk is het compileren een relatief resource intensief proces en aanvankelijk hadden computers niet genoeg geheugen om zo'n programma te houden dat de volledige job deed. Vanwege deze beperking van de hardwarebronnen in vroege computers, werden compilers afgebroken in kleinere subprogramma's die zijn gedeeltelijke baan hebben gedaan door de broncode over te gaan (een "pass" over de bron of een andere vorm ervan) en uitgevoerd analyse, transformaties en vertaaldaken afzonderlijk. Dus, afhankelijk van deze classificatie, worden compilers geidentificeerd als een-pass of multi-pass compilers.

Zoals de naam suggereert, compileren één-pas compilers in een enkele pas. Het is makkelijker om een ​​one-pass compiler te schrijven en ze presteren ook sneller dan multi-pass compilers. Daarom, zelfs in het tijdstip waarop u bronbegrenzingen had, werden talen ontworpen zodat ze samengesteld zouden kunnen worden in een one-pass (bijvoorbeeld Pascal). Aan de andere kant bestaat een typische multi-pass compiler uit meerdere hoofdstadia. De eerste fase is de scanner (ook bekend als de lexicale analysator). Scanner leest het programma en zet het om in een reeks tokens. De tweede fase is de parser. Het converteert de touwtengang naar een parse-boom (of een abstracte syntaxboom), die de syntactische structuur van het programma vastlegt. Volgende fase is die die de semantiek van de syntactische structuur interpreteert. De code optimaliseert stadia en de laatste code generatie fase volg dit.

Wat is een fase in een compiler?

De term fase komt vaak voor wanneer u over compilerkonstructie praat. Aanvankelijk waren compilers elke eenvoudige stuk van single-monolithische software geschreven door één persoon voor het samenstellen van een eenvoudige taal. Maar als de broncode van de te vertalen taal complex wordt en groot, is de compiler afgebroken in meerdere (relatief onafhankelijke) fasen.Het voordeel van verschillende fasen is dat de ontwikkeling van de compiler onder een team van ontwikkelaars kan worden verdeeld. Bovendien verbetert het de modulariteit en hergebruik door fasen te vervangen door verbeterde of extra fasen (zoals verdere optimalisaties) die aan de compiler moeten worden toegevoegd. Het proces van het verdelen van de samenstelling in fasen werd geïntroduceerd door de PQCC (Production Quality Compiler-Compiler Project) van de Carnegie Melon University. Zij introduceerden de termen voorkant, midden en achterkant. De meeste compilers hebben ten minste twee fasen. Maar meestal inkapselen deze achter- en achterkant deze fasen.

Wat is het verschil tussen fase en pas in compiler?

Fase en pas zijn twee termen die gebruikt worden in het gebied van compilers. Een pas is een enkele keer dat de compiler de broncode of een andere representatie doorgaat (gaat door). Meestal hebben de meeste compilanten tenminste twee fasen genaamd voorkant en achterkant, terwijl ze één of meer passages kunnen zijn. Fase wordt gebruikt om de compilanten volgens de constructie te classificeren, terwijl de pass wordt gebruikt om compilers te classificeren volgens hoe ze werken.