Care este diferența dintre un singur pas și un compilator multi-pas

principala diferență între compilarea cu o singură trecere și cu mai multe trepte este asta un compilator cu o singură trecere este un compilator care transmite codul sursă prin fiecare unitate de compilare doar o singură dată, în timp ce un compilator cu mai multe trepte separă compilația în mai multe treceri, în care fiecare trecere va continua cu rezultatul trecerii anterioare.

Un program de calculator este un set de instrucțiuni pentru ca computerul să îndeplinească o anumită sarcină. De obicei, programatorii scriu programe utilizând limbi de programare de nivel înalt. Cu toate acestea, computerul nu înțelege aceste instrucțiuni. Prin urmare, este necesar să convertiți codul sursă într-un cod de mașină ușor de înțeles. Un compilator este un software care convertește codul sursă în codul mașinii, iar compilatorul single pass și multipass sunt două tipuri de compilatoare.

Domenii cheie acoperite

1. Ce este un compilator cu un singur pas
     - Definiție, funcționalitate
2. Ce este un compilator multipass?
     - Definiție, funcționalitate
3. Care este diferența dintre un singur pas și un compilator multi-pas
     - Compararea diferențelor cheie

Termeni cheie

Single Pass, compilator Multipass

Ce este un compilator cu un singur pas

Există o serie de etape în procesul de compilare. Un compilator cu o singură trecere face o singură trecere prin textul sursă, parsarea, analizarea și generarea codului o singură dată. Cu alte cuvinte, permite codul sursă să treacă prin fiecare unitate de compilare o singură dată. Traduce imediat fiecare secțiune de cod în codul mașinii finale. 

Figura 1: Compilator

Etapele principale ale compilatorului single pass sunt analiza lexicală, analiza sintactică și generatorul de coduri. În primul rând, analiza lexicală scanează codul sursă și o împarte în jetoane. Fiecare limbaj de programare are o gramatică. Acesta reprezintă sintaxa și declarațiile juridice ale limbii. Apoi, analiza sintactică determină construcțiile de limbaj descrise de gramatică. În cele din urmă, generatorul de cod generează codul țintă. În general, compilatorul cu o singură trecere nu optimizează codul. Mai mult, nu există generarea de coduri intermediare.  

Ce este compilatorul multipass

Un compilator cu mai multe treceri face ca codul sursă să parcurgă analiza, analiza, generarea etc. de mai multe ori în timp ce generează cod intermediar după fiecare etapă. Convertește programul într-una sau mai multe reprezentări intermediare în pași între codul sursă și codul mașinii. Reprocesează întreaga unitate de compilare în fiecare trecere secvențială.

Fiecare pas ia rezultatul pasului anterior ca intrare și creează o ieșire intermediară. De asemenea, în fiecare pas, codul se îmbunătățește până când pasul final generează codul final. Un compilator cu mai multe trepte efectuează sarcini suplimentare, cum ar fi generarea de coduri intermediare, optimizarea codurilor dependente de mașină și optimizarea codului mașinii independente.

Figura 2: Compilator multi-pas

Există mai multe avantaje pentru compilatoarele multipass. Ele sunt independente de mașină și includ o structură modulară. Generarea de coduri decuplează de la ceilalți pași ai compilației. Prin urmare, trecerile pot fi reutilizate pentru diferite mașini sau hardware. În plus, reprezintă limbi mai complexe și mai expresive.

Diferența dintre un singur pas și un compilator cu mai multe trepte

Definiție

Un compilator cu o singură trecere este un tip de compilator care trece prin părțile fiecărei unități de compilare doar o singură dată, traducând imediat fiecare secțiune de cod în codul mașinii finale. Un compilator multi-pas este un tip de compilator care prelucrează codul sursă sau arborele sintaxei abstracte ale unui program de mai multe ori. Prin urmare, aceste definiții explică principala diferență între compilatorul single pass și multi-pass.

Viteză

Viteza este o diferență majoră între compilarea single pass și multipass. Un compilator cu mai multe trepte este mai lent decât compilatorul cu o singură trecere, deoarece fiecare trecere citește și scrie un fișier intermediar.

Sinonime

Un compilator cu o singură trecere este, de asemenea, numit un compilator îngust în timp ce un compilator multi-pas este numit un compilator larg.

domeniu

Mai mult, un compilator cu o singură trecere are un domeniu limitat, în timp ce un compilator cu mai multe trepte are un domeniu de aplicare mai mare.

Optimizarea codului

O altă diferență între compilarea single pass și multipass este că nu există nici o optimizare a codului într-un compilator cu o singură trecere, spre deosebire de compilatorul multi-pas, care are optimizarea codului.

Codurile intermediare

Codurile intermediare fac, de asemenea, o diferență între compilarea single pass și multi-pass. Nu există generarea de coduri intermediare în compilatoarele cu o singură trecere. Cu toate acestea, există o generare de cod intermediar în compilatoarele cu mai multe trepte.

Timpul de compilare

Mai mult, un compilator cu o singură trecere are un timp minim de compilare în comparație cu un compilator cu mai multe trepte.

Consumul de memorie

De asemenea, consumul de memorie într-un compilator multi-pas este mai mare decât cel al unui compilator cu o singură trecere. Astfel, aceasta este o altă diferență între compilarea single pass și multipass.

Limbaje de programare

Limbile de programare, cum ar fi Pascal, pot fi implementate utilizând un compilator cu o singură trecere, în timp ce limbile de programare, cum ar fi Java, pot fi implementate folosind un compilator multi-pas. Prin urmare, aceasta este încă o diferență între compilatorul single pass și multi-pass.

Concluzie

Single pass și compilatorul cu mai multe trepte sunt două tipuri de compilatoare. Diferența dintre compilarea single pass și multi-pass este aceea că un compilator cu un singur pas este un compilator care trece codul sursă prin fiecare unitate de compilare doar o singură dată, în timp ce un compilator multi-pas separă compilația în mai multe treceri, în care fiecare trecere va continua cu rezultatul trecerii precedente.

Referinţă:

1. "Pass1 și 2 Compiler". Scribd, Scribd, disponibil aici.
2. "Compilator cu un singur pas" Wikipedia, Fundația Wikimedia, 23 martie 2018, disponibil aici.
3. "Multi-Pass Compiler" Wikipedia, Fundația Wikimedia, 8 februarie 2018, disponibil aici.

Datorită fotografiei:

1. "Compilator" de I, Surachit (CC BY-SA 3.0) prin Wikimedia Commons
2. "Multi-passcompiler" de Kenstruys - Activitate proprie (Public Domain) prin Wikimedia Commons