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:13] – [Compiladores] referência adicional para pré-processadores hrcerqprog:guia-de-estudo-c [2026/03/02 01:49] (atual) – [Compiladores] palavra repetida removida hrcerq
Linha 242: Linha 242:
   * [[https://wiki.inf.ufpr.br/maziero/doku.php?id=c:o_preprocessador_c|O preprocessador C]]   * [[https://wiki.inf.ufpr.br/maziero/doku.php?id=c:o_preprocessador_c|O preprocessador C]]
   * [[https://dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node150.html|O pré-processador C]]   * [[https://dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node150.html|O pré-processador C]]
 +  * [[https://www.ime.usp.br/~pf/algoritmos/apend/preprocessor.html|Pré-processamento]]
   * //[[https://en.wikipedia.org/wiki/C_preprocessor|C preprocessor]]// (inglês)   * //[[https://en.wikipedia.org/wiki/C_preprocessor|C preprocessor]]// (inglês)
  
Linha 364: 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.1772403195.txt.gz · Última modificação: por hrcerq