Verschil tussen fase en pas in compiler

Verschil tussen fase en pas in compiler
Verschil tussen fase en pas in compiler

Video: Verschil tussen fase en pas in compiler

Video: Verschil tussen fase en pas in compiler
Video: Het verschil tussen wiskunde a,b,c en d 2024, Juli-
Anonim

Fase vs Pass in Compiler

Over het algemeen is compiler een computerprogramma dat een programma leest dat in de ene taal is geschreven, de brontaal, en het verta alt in een andere taal, de doeltaal. Traditioneel was brontaal een taal op hoog niveau, zoals C++, en doeltaal was een taal op laag niveau, zoals assembler. 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 bij compilers. Aantal passen van een compiler is het aantal keren dat het over de bron gaat (of een vorm van weergave ervan). Een compiler is opgesplitst in delen voor het gemak van de constructie. Phase wordt vaak gebruikt om zo'n enkel onafhankelijk deel van een compiler aan te roepen.

Wat is een Pass in een compiler?

Een standaard manier om compilers te classificeren is door het aantal "passes". Gewoonlijk is compileren een relatief arbeidsintensief proces en aanvankelijk hadden computers niet genoeg geheugen om een dergelijk programma te bevatten dat het volledige werk 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 doorlopen (een "pass" maakten over de bron of een andere vorm ervan) en analyses uitvoerden, transformaties en verta altaken afzonderlijk. Dus, afhankelijk van deze classificatie, worden compilers geïdentificeerd als compilers met één of meerdere passages.

Zoals de naam al doet vermoeden, compileren one-pass compilers in een enkele pass. Het is gemakkelijker om een één-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 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 ontleden-boom (of een abstracte syntaxis-boom), 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 laatste codegeneratiefase volgen dit.

Wat is een fase in een compiler?

De term fase komt vaak naar voren als je het hebt over compilerconstructie. Aanvankelijk waren compilers allemaal eenvoudige stukjes enkele, monolithische software die door één persoon werd geschreven voor de compilatie van een eenvoudige taal. Maar toen de broncode van de te vertalen taal complex en groot werd, werd de compiler opgedeeld in meerdere (relatief onafhankelijke) fasen. Het voordeel van verschillende fasen is dat de ontwikkeling van de compiler verdeeld kan worden over een team van ontwikkelaars. Bovendien verbetert het de modulariteit en hergebruik door fasen te laten vervangen door verbeterde of extra fasen (zoals verdere optimalisaties) toe te voegen aan de compiler. Het proces van het opdelen 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 pas is een enkele keer dat de compiler de broncode of een andere representatie ervan doorgeeft (doorloopt). Meestal hebben de meeste compilers ten minste twee fasen, de zogenaamde front-end en back-end, terwijl ze ofwel één doorgang of meerdere doorgangen kunnen zijn. Phase wordt gebruikt om compilers te classificeren volgens de constructie, terwijl pass wordt gebruikt om compilers te classificeren op basis van hoe ze werken.

Aanbevolen: