Assembler vs Compiler
In generale, il compilatore è un programma per computer che legge un programma scritto in una lingua, che è chiamata la lingua di partenza e la traduce in un'altra lingua, che è chiamata la lingua di destinazione. Tradizionalmente, la lingua di partenza era un linguaggio di alto livello come il C ++ e la lingua di destinazione era un linguaggio di basso livello come il linguaggio Assembly. Tuttavia, ci sono compilatori che possono convertire un programma sorgente scritto in linguaggio Assembly e convertirlo in codice macchina o codice oggetto. Gli assemblatori sono tali strumenti. Quindi, sia gli assemblatori che i compilatori alla fine producono codice che può essere eseguito direttamente su una macchina.
Cos'è un compilatore?
Il compilatore è un programma per computer che legge un programma scritto in una lingua, che è chiamata la lingua di partenza e la traduce in un'altra lingua, che è chiamata la lingua di destinazione. Molto spesso, la lingua di partenza è una lingua di alto livello e la lingua di destinazione è un linguaggio di basso livello. Quindi, in generale i compilatori possono essere visti come traduttori che traducono da una lingua all'altra. Inoltre, i compilatori eseguono alcune ottimizzazioni sul codice. Un tipico compilatore è composto da diversi componenti principali. Il primo componente è lo scanner (noto anche come analizzatore lessicale). Lo scanner legge il programma e lo converte in una stringa di token. Il secondo componente è il parser. Converte la stringa di token in un albero di analisi (o un albero di sintassi astratto), che cattura la struttura sintattica del programma. Il prossimo componente sono le routine semantiche che interpretano la semantica della struttura sintattica. Le ottimizzazioni del codice e la generazione del codice finale lo seguono.
Cos'è un Assemblatore?
Assembler è un software o uno strumento che traduce il linguaggio Assembly in codice macchina. Quindi, un assemblatore è un tipo di compilatore e il codice sorgente è scritto in linguaggio Assembly. Assembly è un linguaggio leggibile dall'uomo ma in genere ha una relazione uno a uno con il codice macchina corrispondente. Pertanto, si dice che un assemblatore esegua una traduzione isomorfa (mappatura uno a uno). Assemblatori avanzati forniscono funzionalità aggiuntive che supportano i processi di sviluppo e debug del programma. Ad esempio, il tipo di assemblatori chiamati macro assemblatori fornisce una funzione macro.
Qual è la differenza tra un assemblatore 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 assemblatore può essere considerato un tipo speciale di compilatore che traduce solo il linguaggio Assembly in codice macchina. I compilatori di solito producono il codice eseguibile della macchina direttamente da un linguaggio di alto livello, ma gli assemblatori producono un codice oggetto che potrebbe dover essere collegato utilizzando programmi di linker per essere eseguito su una macchina. Poiché il linguaggio Assembly ha un mapping uno a uno con il codice macchina, un assemblatore può essere utilizzato per produrre codice che viene eseguito in modo molto efficiente in occasioni in cui le prestazioni sono molto importanti (ad esempio motori grafici, sistemi embedded con risorse hardware limitate rispetto a un personal computer) come microonde, lavatrici, ecc.).