Assembly writer vs compilatore in architettura VLIW


8

Ho letto questa frase in un libro:

Nell'architettura VLIW, il compilatore / o il writer dell'assembly sceglie le istruzioni che possono essere eseguite in parallelo.

Qual è la differenza tra assembly writer e compilatore? Uno scrittore di assemblaggio significherebbe anche lo stesso di assemblatore?

Risposte:


33

Lo "scrittore di assemblaggi" in quel libro è uno sviluppatore di software umano che scrive codice in linguaggio assembler.


15
1. l'interprete non converte nulla in linguaggio assembly. 2. Qualsiasi strumento che converte il codice sorgente in linguaggio assembly è per definizione un compilatore.
gnasher729,

4
@ KellyS.French un assemblatore converte il codice del linguaggio assembly in codice macchina, quindi con questa definizione non è un compilatore. Se, tuttavia, si dispone di uno strumento che converte un linguaggio assembly in un altro (ad es. ARBfp1.0 in linguaggio assembly nativo di una GPU moderna), questo strumento è un compilatore (con questa definizione).
Ruslan,

1
@ gnasher729 - nitpick: per la maggior parte delle definizioni, la parte "Assembly language" di (2) non è necessaria (in particolare, cose come il compilatore dattiloscritto o il compilatore java, nessuno dei quali compila l'origine da assemblare, ma compila in codice javascript o java bytecode rispettivamente). Più recentemente, generalmente indica qualsiasi strumento che compila un linguaggio di programmazione in un altro linguaggio di programmazione (e assembly è tecnicamente un linguaggio di programmazione).
Delioth

2
@ KellyS.French: un compilatore è un programma che traduce un programma in lingua X in un programma semanticamente equivalente in lingua Y. A seconda di cosa siano esattamente le lingue X e Y, abbiamo nomi speciali per quei compilatori e "assembler" è uno di quei nomi speciali. Ma sono tutti tipi speciali di compilatori. Ad esempio, se Y = assembly e X è di livello superiore a Y, allora lo chiamiamo assemblatore. Se Y = assembly e X è inferiore a Y, lo chiamiamo un disassemblatore. Se X è di livello inferiore rispetto a Y e Y! = Assembly, lo chiamiamo un de-compilatore. Se X e Y sono allo stesso livello, l'utilizzo recente sarebbe ...
Jörg W Mittag

2
@ KellyS.French: immagino che il motivo per cui gli assemblatori non sono in genere molto discussi in termini di compilatori è che gli assemblatori sono compilatori molto noiosi. Alla base, un assemblatore è solo una mappatura 1: 1 della mnemonica leggibile dall'uomo su codici opzionali leggibili da una macchina. La fase di analisi è semplice, non ci sono tipi, non ci sono ottimizzazioni, la generazione del codice è banale. Nessuna delle cose algoritmiche interessanti che fanno i compilatori è presente: analisi di un linguaggio complesso, verifica dei tipi, inferenza dei tipi, ottimizzazioni, mappatura intelligente della semantica ecc.
Jörg W Mittag

10

Nell'architettura VLIW, il compilatore / o il writer dell'assembly sceglie le istruzioni che possono essere eseguite in parallelo

Il significato di questa frase è che nell'architettura VLIW, il codice assembler (macchina) definisce quale istruzione verrà eseguita in parallelo, quindi è fissa nel momento in cui il codice assembly viene scritto da un essere umano o generato da un compilatore.

Ciò differisce dal cpus super-scalare, dove le istruzioni possono essere eseguite in parallelo, questa è una decisione presa dalla CPU ogni volta che esegue le istruzioni.

Ci sono anche CPU che combinano entrambi gli approcci: Itanium2 è retrocompatibile con Itanium, racchiudendo 3 istruzioni in parola VLIW. Tuttavia, Itanium2 può eseguire due di questi pacchetti nel singolo ciclo della CPU e questa decisione viene presa al momento dell'esecuzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.