Assembler vs Compiler
Em geral, compilador é um programa de computador que lê um programa escrito em uma linguagem, que é chamada de linguagem de origem, e o traduz para outra linguagem, que é chamada de linguagem de destino. Tradicionalmente, a linguagem de origem era uma linguagem de alto nível, como C ++, e a linguagem de destino era uma linguagem de baixo nível, como a linguagem Assembly. No entanto, existem compiladores que podem converter um programa-fonte escrito em linguagem Assembly e convertê-lo em código de máquina ou código-objeto. Montadores são essas ferramentas. Portanto, tanto os montadores quanto os compiladores acabam produzindo código que pode ser executado diretamente em uma máquina.
O que é um compilador?
Compiler é um programa de computador que lê um programa escrito em uma linguagem, que é chamada de linguagem de origem, e o traduz para outra linguagem, que é chamada de linguagem de destino. Na maioria das vezes, o idioma de origem é um idioma de alto nível e o idioma de destino é um idioma de baixo nível. Portanto, em geral, os compiladores podem ser vistos como tradutores que traduzem de um idioma para outro. Além disso, os compiladores realizam algumas otimizações no código. Um compilador típico é feito de vários componentes principais. O primeiro componente é o scanner (também conhecido como analisador léxico). Scanner lê o programa e o converte em uma string de tokens. O segundo componente é o analisador. Ele converte a string de tokens em uma árvore de análise (ou uma árvore de sintaxe abstrata), que captura a estrutura sintática do programa. O próximo componente são as rotinas semânticas que interpretam a semântica da estrutura sintática. As otimizações de código e geração de código final seguem isso.
O que é um Assembler?
Assembler é um software ou ferramenta que traduz a linguagem Assembly em código de máquina. Portanto, um assembler é um tipo de compilador e o código-fonte é escrito em linguagem Assembly. Assembly é uma linguagem legível por humanos, mas normalmente tem uma relação de um para um com o código de máquina correspondente. Portanto, diz-se que um montador executa tradução isomórfica (mapeamento um para um). Montadores avançados fornecem recursos adicionais que suportam o desenvolvimento de programas e processos de depuração. Por exemplo, o tipo de montadores chamados montadores de macro fornece um recurso de macro.
Qual é a diferença entre um Assembler e um Compilador?
Compiler é um programa de computador que lê um programa escrito em uma linguagem e o traduz para outra linguagem, enquanto um assembler pode ser considerado um tipo especial de compilador que traduz apenas a linguagem Assembly em código de máquina. Os compiladores geralmente produzem o código executável da máquina diretamente de uma linguagem de alto nível, mas os montadores produzem um código-objeto que pode ter que ser vinculado por meio de programas vinculadores para ser executado em uma máquina. Como a linguagem Assembly tem um mapeamento um para um com código de máquina, um montador pode ser usado para produzir código que é executado de forma muito eficiente para ocasiões em que o desempenho é muito importante (por exemplo, motores gráficos, sistemas embarcados com recursos de hardware limitados em comparação com um computador pessoal como microondas, máquinas de lavar, etc.).