Assembler vs Compiler
Em geral, o compilador é um programa de computador que lê um programa escrito em um idioma, chamado de idioma de origem, e o converte em outro idioma, chamado de idioma de destino. Tradicionalmente, o idioma de origem era um idioma de alto nível, como C ++, e o idioma de destino, um idioma de baixo nível, como a linguagem Assembly. No entanto, existem compiladores que podem converter um programa de origem escrito em linguagem Assembly e convertê-lo em código de máquina ou código de objeto. Montadores são essas ferramentas. Portanto, tanto os montadores quanto os compiladores produzem código que pode ser executado diretamente em uma máquina.
O que é um compilador?
Compilador é um programa de computador que lê um programa escrito em um idioma, chamado de idioma de origem, e o converte em outro idioma, chamado de idioma 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 é composto de vários componentes principais. O primeiro componente é o scanner (também conhecido como analisador lexical). O scanner lê o programa e o converte em uma sequência de tokens. O segundo componente é o analisador. Ele converte a sequência 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 a geração final de código seguem este.
O que é um assembler?
Assembler é um software ou uma 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 na linguagem Assembly. Assembly é uma linguagem legível por humanos, mas geralmente possui um relacionamento individual com o código de máquina correspondente. Portanto, é dito que um assembler executa a tradução isomórfica (mapeamento um a um). Montadores avançados fornecem recursos adicionais que dão suporte aos processos de desenvolvimento e depuração de programas. Por exemplo, o tipo de montadores chamados macro assemblers fornece um recurso de macro.
Qual é a diferença entre um Assembler e um Compilador?
Compilador é um programa de computador que lê um programa escrito em um idioma e o traduz para outro idioma, 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 de objeto que pode ter que ser vinculado usando programas vinculados para executar em uma máquina. Como a linguagem Assembly possui um mapeamento individual com código de máquina, um assembler pode ser usado para produzir código executado com muita eficiência em ocasiões em que o desempenho é muito importante (por exemplo, mecanismos gráficos, sistemas incorporados com recursos limitados de hardware em comparação com um computador pessoal como microondas, máquinas de lavar, etc.).