Slackjeff Wiki

Juntando bits aprendemos juntos

Ferramentas do usuário

Ferramentas do site


prog:guia-de-estudo-c

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
prog:guia-de-estudo-c [2026/03/01 22:18] – [Compiladores] Mais uma referência de pré-processamento hrcerqprog:guia-de-estudo-c [2026/03/02 01:49] (atual) – [Compiladores] palavra repetida removida hrcerq
Linha 365: Linha 365:
  
 === Montagem === === Montagem ===
 +
 +Diferentemente de um processo de compilação, que dá ênfase à
 +intenção do programador quanto //ao quê// deve ser feito pelo programa,
 +a montagem é um processo mais linear, que enfatiza //como// deve ser
 +feito. Portanto, a montagem é uma tradução mais literal de expressões
 +mnemônicas para equivalentes binários que podem ser compreendidos pelo
 +processador alvo.
 +
 +Um código-fonte C pode passar por várias transformações e ainda assim
 +manter seu sentido original, não importanto para o programador quais
 +otimizações precisaram ser aplicadas, desde que o comportamento se
 +mantenha consistente. Já o código de montagem (//assembly//) é mais
 +diretamente equivalente ao resultado (binário).
 +
 +Embora a estrutura geral da linguagem //assembly// possua semelhanças
 +entre diferentes arquiteturas de processamento, existem diferenças
 +suficientes para que se possa considerar como código não portável.
 +O código //assembly// escrito para uma máquina terá de ser reescrito
 +para outra, se esta utilizar uma arquitetura diferente.
 +
 +Para compreender melhor como ocorre esse processo, você pode ler os
 +seguintes documentos:
 +
 +  * [[https://pt.wikipedia.org/wiki/Assembly|Linguagem assembly]]
 +  * [[https://dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node79.html|Montadores]]
 +  * [[https://pt.wikipedia.org/wiki/Linguagem_de_montagem_x86|Linguagem de montagem x86]]
 +  * [[https://dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node107.html|Assembly do 68000]]
 +
 +Ao compreender o processo de montagem, você já deve ter percebido
 +as principais vantagens em programar em C no lugar de programar
 +diretamente em //Assembly//:
 +
 +  * Por ser uma linguagem de alto nível (ao menos comparado a //Assembly//), C permite maior evidenciação sobre o que o programa deve fazer, isto é, é uma linguagem mais expressiva e intuitiva;
 +  * Por ser uma linguagem portável, não será necessário reescrever o programa para cada arquitetura alvo.
 +
 +Para cada arquitetura de processamento, existem diferentes montadores.
 +Você pode conferir uma lista (não exaustiva) no documento a seguir:
 +
 +  * //[[https://en.wikipedia.org/wiki/List_of_assemblers|Comparison of assemblers]]// (em inglês)
  
 === Ligação === === Ligação ===
prog/guia-de-estudo-c.1772403518.txt.gz · Última modificação: por hrcerq