Differenza tra Assemblatore, Compilatore e Interprete in informatica

Differenza tra Assemblatore, Compilatore e Interprete in informatica

Nei computer convenzionali, la traduzione del programma o del codice sorgente in codice oggetto/macchina viene eseguita con vari metodi che includono assemblatore, compilatore e interprete. Di seguito sono riportati i dettagli di base di come differiscono l’uno dall’altro.

Differenza tra Assemblatore, Compilatore e Interprete in informatica

Assemblatore

Un assemblatore (in inglese assembler) è un programma che prende le istruzioni o le istruzioni di base del computer e le converte in un modello di bit che il processore del computer può utilizzare per eseguire le sue operazioni di base. Di solito, il linguaggio utilizzato per programmare l’assembler è indicato come linguaggio assembly . Assembler converte prima il codice sorgente in un codice oggetto, quindi converte il codice oggetto in linguaggio macchina con l’aiuto dei programmi linker.

Compilatore

Un compilatore (in inglese compiler) è un programma per computer che trasforma il codice sorgente scritto nel linguaggio di programmazione in linguaggio macchina e quindi lo esegue. Normalmente, i compilatori possono richiedere tempo perché devono tradurre immediatamente il codice di alto livello in un linguaggio macchina di livello inferiore e quindi salvare il codice dell’oggetto eseguibile nella memoria. Anche in un compilatore, dopo la conversione di tutto il codice in una volta, viene generato un rapporto di errore per l’intero programma.

I compilatori possono essere classificati in base alla funzione che svolge o al modo in cui è stato costruito. I compilatori possono essere classificati come single-pass, load-and-go, debugging, multi-pass e ottimizzazione.

La compilazione viene eseguita nelle seguenti fasi : analizzatore lessicale, analizzatore di sintassi, analizzatore semantico, generatore di codice intermedio, ottimizzatore di codice, tabella dei simboli e handle di errore .

Interprete

Un interprete (in inglese Interpreter) è un programma per computer che traduce istruzioni di alto livello in una forma intermedia e poi converte quel codice intermedio in linguaggio macchina e; svolge azioni specifiche. Gli interpreti vengono spesso utilizzati negli strumenti di sviluppo software come strumenti di debug perché possono eseguire un singolo codice alla volta. Nel linguaggio Java, il compilatore e l’interprete lavorano insieme per generare il codice macchina.

Differenza tra assemblatore, compilatore e interprete

Assembler e Compilatore

BASE DI CONFRONTO ASSEMBLATORE COMPILATORE 
Conversione Assembler converte il codice assembly nel codice macchina. Il compilatore converte il codice sorgente scritto dal programmatore in un linguaggio a livello di macchina.
Ingresso L’assemblatore inserisce il codice sorgente.   Gli input del compilatore sono codice sorgente preelaborato.
Il risultato L’output dell’assembler è un codice binario. L’output del compilatore è una versione mnemonica del codice macchina.
Esempi GAS
GNU
C
C #
Java
C ++
Debug Il debug è difficile.   Il debug è semplice.
Lavorando Assembler converte prima il codice sorgente in un codice oggetto, quindi converte il codice oggetto nel linguaggio macchina con l’aiuto di programmi linker. Complier esegue la scansione dell’intero programma prima di tradurlo in codice macchina.  
Intelligenza L’Assembler è meno intelligente di un compilatore. Il compilatore è più intelligente dell’assemblatore.
Fasi di lavoro L’Assembler esegue i lavori in due fasi sull’input fornito. Le fasi sono:
Prima Fase
Seconda Fase
Le fasi di compilazione sono:
Analizzatore lessicale Analizzatore di
sintassi Analizzatore
semantico
Ottimizzatore di
codice Generatore di codice
Gestore di errori

Compilatore e Interprete

BASE DI CONFRONTO COMPILATORE INTERPRETE
Funzione Un compilatore converte il codice del programma di linguaggio di alto livello in linguaggio macchina e quindi lo esegue. L’interprete converte il codice sorgente nella forma intermedia e poi converte quel codice intermedio in linguaggio macchina
Scansione Complier esegue la scansione dell’intero programma prima di tradurlo in codice macchina.   L’interprete esegue la scansione e traduce il programma riga per riga in un codice macchina equivalente.  
Lavorando Il compilatore accetta l’intero programma come input.   L’interprete accetta una singola istruzione come input.  
Generazione di codice Il codice oggetto intermedio viene generato in caso di compilatore.   In caso di interprete, non viene generato alcun codice oggetto intermedio.  
Tempo di esecuzione Il compilatore richiede meno tempo di esecuzione rispetto all’interprete.   L’interprete richiede più tempo di esecuzione rispetto al compilatore.  
Esempi C
COBOL
C #
C ++, ecc  
 Python
Perl
VB
PostScript
LISP ecc.  
Requisiti di memoria Il compilatore richiede più memoria dell’interprete.   L’interprete ha bisogno di meno memoria rispetto al compilatore.  
Modifica Se ti capita di apportare modifiche al programma, devi ricompilare l’intero programma, cioè scansionare l’intero programma ogni volta dopo la modifica.   Se si apportano modifiche e se quella riga non è stata scansionata, non è necessario ricompilare l’intero programma.  
Velocità Il compilatore è più veloce rispetto all’interprete.   L’interprete è più lento rispetto al compilatore.  
All’esecuzione Di solito non è necessario compilare il programma ogni volta (se non modificato) al momento dell’esecuzione.   Ogni volta che il programma viene scansionato e tradotto al momento dell’esecuzione.  
Rilevamento degli errori Il compilatore fornisce l’elenco di tutti gli errori dopo la compilazione dell’intero programma.   L’interprete interrompe la traduzione alla generazione dell’errore e continuerà quando l’errore viene risolto.  
Codice macchina Il compilatore converte l’intero programma in codice macchina quando tutti gli errori vengono rimossi l’esecuzione ha luogo.   Ogni volta che il programma viene eseguito; ogni riga viene controllata per errore e quindi convertita in codice macchina equivalente.  
Debug Il compilatore è lento per il debug perché gli errori vengono visualizzati dopo che l’intero programma è stato controllato.   Interpreter è utile per il debug veloce.
Versione codice Il codice assembly generato dal compilatore è una versione mnemonica del codice macchina.   All’output dell’assembler è il codice macchina ricollocabile generato da un assembler rappresentato da codice binario.  

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *