prog:guia-de-estudo-c
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anteriorRevisão anteriorPróxima revisão | Revisão anterior | ||
| prog:guia-de-estudo-c [2026/02/28 04:41] – [Ferramentas de análise dinâmica] informação estava imprecisa hrcerq | prog:guia-de-estudo-c [2026/03/02 01:49] (atual) – [Compiladores] palavra repetida removida hrcerq | ||
|---|---|---|---|
| Linha 193: | Linha 193: | ||
| - [[prog: | - [[prog: | ||
| - [[prog: | - [[prog: | ||
| + | |||
| + | Portanto, o mínimo necessário para compilar programas C são um | ||
| + | pré-processador, | ||
| + | da biblioteca C (que será explicada mais adiante). | ||
| As ferramentas que desempenham essas funções podem ou não estar | As ferramentas que desempenham essas funções podem ou não estar | ||
| - | agrupadas em uma mesma coleção | + | agrupadas em uma mesma coleção. Duas coleções particularmente |
| - | Clang, por exemplo, fazem esse agrupamento de funções). | + | notórias são: |
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | Outra um pouco menos conhecida é a do //Tiny C Compiler// (TCC): | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | E ainda outra é a do //Simple C Compiler// (SCC): | ||
| + | |||
| + | * [[https:// | ||
| === Pré-processamento === | === Pré-processamento === | ||
| Linha 225: | Linha 240: | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| * // | * // | ||
| Linha 238: | Linha 255: | ||
| * [[http:// | * [[http:// | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| === Compilação === | === Compilação === | ||
| Linha 335: | Linha 353: | ||
| * [[https:// | * [[https:// | ||
| - | * [[https:// | + | * [[https:// |
| Por fim, existem compiladores que não utilizam uma representação | Por fim, existem compiladores que não utilizam uma representação | ||
| - | intermediária. Um exemplo interessante é o TinyC Compiler (TCC): | + | intermediária. Um exemplo interessante é o Tiny C Compiler (TCC): |
| * [[https:// | * [[https:// | ||
| Linha 347: | Linha 365: | ||
| === Montagem === | === Montagem === | ||
| + | |||
| + | Diferentemente de um processo de compilação, | ||
| + | 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 (// | ||
| + | diretamente equivalente ao resultado (binário). | ||
| + | |||
| + | Embora a estrutura geral da linguagem // | ||
| + | entre diferentes arquiteturas de processamento, | ||
| + | suficientes para que se possa considerar como código não portável. | ||
| + | O código // | ||
| + | para outra, se esta utilizar uma arquitetura diferente. | ||
| + | |||
| + | Para compreender melhor como ocorre esse processo, você pode ler os | ||
| + | seguintes documentos: | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | Ao compreender o processo de montagem, você já deve ter percebido | ||
| + | as principais vantagens em programar em C no lugar de programar | ||
| + | diretamente em // | ||
| + | |||
| + | * Por ser uma linguagem de alto nível (ao menos comparado a // | ||
| + | * Por ser uma linguagem portável, não será necessário reescrever o programa para cada arquitetura alvo. | ||
| + | |||
| + | Para cada arquitetura de processamento, | ||
| + | Você pode conferir uma lista (não exaustiva) no documento a seguir: | ||
| + | |||
| + | * // | ||
| === Ligação === | === Ligação === | ||
| Linha 728: | Linha 785: | ||
| * '' | * '' | ||
| - | * [[https:// | + | * [[https:// |
| - | * [[https:// | + | * [[https:// |
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
prog/guia-de-estudo-c.1772253675.txt.gz · Última modificação: por hrcerq