Differenza tra assemblatore e compilatore

Anonim

Assembler vs Compiler

In generale, il compilatore è un programma per computer che legge un programma scritto in una lingua chiamata la lingua di origine e la traduce in un'altra lingua, che viene definita la lingua di destinazione. Tradizionalmente, la lingua di origine era un linguaggio di alto livello come C ++ e la lingua di destinazione era un linguaggio a basso livello come la lingua dell'Assemblea. Tuttavia, ci sono compilatori che possono convertire un programma di origine scritto in lingua Assembly e convertirlo in codice macchina o codice oggetto. Gli assemblatori sono tali strumenti. Così, sia gli assemblatori che i compilatori producono in ultima analisi codice che può essere eseguito direttamente su una macchina.

Che cos'è un compilatore?

Il compilatore è un programma per computer che legge un programma scritto in una sola lingua, che viene chiamata la lingua di origine e la traduce in un'altra lingua, chiamata lingua di destinazione. Più spesso, la lingua di origine è un linguaggio di alto livello e la lingua di destinazione è un linguaggio a basso livello. Quindi, in generale i compilatori possono essere considerati come traduttori che traducono da una lingua all'altra. Inoltre, i compilatori eseguono alcune ottimizzazioni al codice. Un compilatore tipico è costituito da più componenti principali. Il primo componente è lo scanner (noto anche come analizzatore lessicale). Lo scanner legge il programma e lo converte in una serie di gettoni. Il secondo componente è il parser. Trasforma la stringa di gettoni in un albero di analisi (o un albero di sintassi astratto), che cattura la struttura sintattica del programma. Il componente successivo è le routine semantiche che interpretano la semantica della struttura sintattica. Le ottimizzazioni di codice e la generazione di codice finale seguono questo.

Che cos'è un Assembler?

Assembler è un software o uno strumento che traduce la lingua dell'Assemblea al codice macchina. Quindi, un assembler è un tipo di compilatore e il codice sorgente è scritto in lingua Assembly. L'assemblaggio è un linguaggio leggibile dall'uomo, ma in genere ha un rapporto uno a uno con il codice macchina corrispondente. Pertanto, un assembler è detto di eseguire una traduzione isomorfa (una a una mappatura). Gli assemblatori avanzati forniscono funzioni aggiuntive che supportano i processi di sviluppo e di debug del programma. Ad esempio, il tipo di assemblatori denominati macro assembler fornisce una struttura macro.

Qual è la differenza tra un Assembler e un Compilatore?

Il compilatore è un programma per computer che legge un programma scritto in una lingua e lo traduce in un'altra lingua, mentre un assembler può essere considerato un tipo speciale di compilatore che traduce solo la lingua dell'Assemblea al codice macchina. I compilatori generano di solito il codice eseguibile della macchina direttamente da un linguaggio di livello elevato, ma gli assemblatori producono un codice oggetto che potrebbe essere necessario collegare con programmi di linker per eseguire su una macchina.Poiché la lingua dell'Assemble ha un mapping con codice macchina, un assembler può essere utilizzato per produrre codice che funziona in modo molto efficiente per le occasioni in cui le prestazioni sono molto importanti (per esempio i motori grafici, i sistemi embedded con risorse hardware limitate rispetto ad un personal computer come microonde, lavatrici, ecc.).