Escritor Assembly vs compilador na arquitetura VLIW

8

Eu li esta frase em um livro:

Na arquitetura VLIW, o compilador / e / ou gravador de montagem escolhe instruções que podem ser executadas em paralelo.

Qual é a diferença entre gravador de montagem e compilador? Um escritor de montagem também significaria o mesmo que montador?

Dasha Sham
fonte

Respostas:

33

O "escritor de montagem" desse livro é um desenvolvedor de software humano que escreve código na linguagem assembler.

gnasher729
fonte
15
1. O intérprete não converte nada em linguagem assembly. 2. Qualquer ferramenta que converta o código-fonte em linguagem assembly é, por definição, um compilador.
gnasher729
4
@ KellyS.French um assembler converte o código da linguagem assembly em código de máquina, portanto, com esta definição, não é um compilador. Se, no entanto, você tiver uma ferramenta que converta uma linguagem assembly em outra (por exemplo, ARBfp1.0 para linguagem assembly nativa de uma GPU moderna), essa ferramenta é um compilador (com esta definição).
Ruslan
1
@ gnasher729 - nitpick: pela maioria das definições, a parte "Linguagem Assembly" de (2) é desnecessária (principalmente coisas como o compilador de texto datilografado ou o compilador java, nenhum dos quais compila a fonte para a montagem, mas compila para javascript ou bytecode java respectivamente). Mais recentemente, geralmente significa qualquer ferramenta que compila uma linguagem de programação em outra linguagem de programação (e o assembly é tecnicamente uma linguagem de programação).
Delioth 14/05/19
2
@ KellyS.French: Um compilador é um programa que traduz um programa na linguagem X em um programa semanticamente equivalente na linguagem Y. Dependendo de quais são exatamente os idiomas X e Y, temos nomes especiais para esses compiladores, e "assembler" é um desses nomes especiais. Mas eles são todos os tipos especiais de compiladores. Por exemplo, se Y = assembly e X é de nível superior a Y, então o chamamos de assembler. Se Y = montagem e X é de nível inferior a Y, chamamos de desmontador. Se X é de nível inferior ao conjunto Y e Y! =, Chamamos de descompilador. Se X e Y são o mesmo nível, uso recente iria ...
Jörg W Mittag
2
@ KellyS.French: Eu acho que a razão pela qual os montadores não costumam falar muito em termos de compiladores é que eles são muito chatos. Em sua essência, um montador é apenas um mapeamento 1: 1 de mnemônicos legíveis por humanos para opcodes legíveis por máquinas. O estágio de análise é simples, não há tipos, não há otimizações, a geração de código é trivial. Nenhuma das coisas algorithmitic interessante que compiladores fazer é apresentar: analisar uma linguagem complexa, verificação de tipo, tipo de inferência, otimizações, mapeamento inteligente de semântica etc.
Jörg W Mittag
10

Na arquitetura VLIW, o compilador / e / ou escritor de montagem escolhe instruções que podem ser executadas em paralelo

O significado desta frase é que, na arquitetura VLIW, o código do assembler (máquina) define qual instrução será executada em paralelo; portanto, é fixada no momento em que o código do assembly é escrito por um humano ou gerado por um compilador.

Isso difere do cpus super-escalar, onde as instruções podem ser executadas em paralelo; essa é uma decisão tomada pela CPU cada vez que executa as instruções.

Também existem CPUs que combinam as duas abordagens - o Itanium2 é compatível com versões anteriores do Itanium, inserindo 3 instruções no VLIW word. Mas, de fato, o Itanium2 pode executar dois desses pacotes no único ciclo da CPU, e essa decisão é tomada no tempo de execução.

Bulat
fonte