COMPILADOR
Seminário: COMPILADOR. Pesquise 862.000+ trabalhos acadêmicosPor: COMPILADOR12 • 20/11/2014 • Seminário • 1.126 Palavras (5 Páginas) • 473 Visualizações
Montador. Este é o programa que transforma o código escrito na linguagem Assembly em linguagem de máquina, substituindo as instruções, variáveis pelos códigos binários e endereços de memória correspondentes.
Ligador ou Linkeditor, em informática, é um programa que liga objetos gerados por um compilador, formando assim o ficheiro executável final. O trabalho de um Ligador é bastante simples: Estabelece a amarração ou vinculação entre referências mais abstratas para referências mais concretas.
Carregadores (ou Loaders) são programas que fazem parte do Sistema Operacional usado para carregar os arquivos objeto para a memória.
As técnicas de otimização podem ser classificadas como independentes de máquina, quando podem ser aplicadas antes da geração do código na linguagem assembly, ou dependentes de máquina, quando aplicadas na geração do código assembly.
Em computação, otimização é o processo de modificar fazer algum aspecto de um sistema para que trabalhe com mais eficiência ou utilize menos recursos.
Tipos de otimização
Remoção de sub-expressão comum. Remoção de sub-expressão comum é uma otimização que procura por ocorrências de expressões idênticas (ou seja, todos eles avaliar o mesmo valor), e as análises se vale a penas em substituir por uma única variável mantendo o valor calculado.
Otimização de Código Morto Eliminação de código morto é uma otimização do compilador que remove código que não afeta um programa. Remoção de tal código tem duas vantagens encolhe o tamanho do programa, uma consideração importante em alguns contextos. Ele permite que o programa em execução evitar a execução de operações irrelevantes, o que reduz seu tempo de execução. Eliminação de código morto é de dois tipos: - Código Inacessível - Declaração redundante
Otimização de Loop Otimização de Loop desempenha um papel importante na melhoria do desempenho do código fonte, reduzindo despesas gerais associadas com loops de execução. Otimização de loop pode ser feito através da remoção: - Loop invariante - Variáveis de indução.
1. Passagem de parâmetros por valor
- método mais simples de passagem de parâmetros.
- parâmetros são avaliados e seus valores são passados para o procedimento chamado.
2. Passagem de parâmetros por referência (também conhecida por passagem por endereço ou passagem por localização)
- procedimento chamador passa o endereço de cada parâmetro real.
- se um parâmetro real é:
- as alterações efetuadas nos parâmetros dentro das funções serão notadas fora das funções, o que não acontece com a passagem de parâmetros por valor.
3. Passagem de parâmetros por cópia-restauração
- é um meio termo entre passagem por valor e passagem por referência, também é conhecido como passagem por valor-resultado.
4. Passagem de parâmetros por nome
- apenas interesse teórico, pouco usado na prática.
1- Alocação estática
- reserva de memória é feita durante a compilação de forma estática;
- tipo (ou comprimento) do dado é conhecido em tempo de compilação;
- comprimento não é modificado durante a execução do programa.
2. Alocação dinâmica (HEAP)
- estruturas de dados referenciadas através de ponteiros, as áreas também são reservadas dinamicamente.
- áreas são alocadas e liberadas de acordo com o código escrito pelo programador.
- alocadas na área de “heap”, que cresce no sentido contrário ao da pilha.
Árvores de Ativação
• Pode ser controlado sinalizando o momento em que se entra e sai de um procedimento.
• Procedimentos recursivos iniciam uma ativação antes que uma anterior tenha sido encerrada.
Pilha de Controle
• Em uma pilha de controle, o nó é empilhado para uma ativação quando esta iniciar, e é desempilhado quando a ativação terminar.
• O conteúdo da pilha de controle está relacionado a percursos até a raiz da árvore de ativações.
Geração de código
A tradução de código de alto nível para o código do processador está associada a traduzir a linguagem alvo a representação da arvore gramatical obtida para as diversas expressões do programa. Embora tal atividade possa ser realizada para a arvore completa após a conclusão da análise sintática, em geral ela é efetuada através das ações semânticas associadas á aplicação das regras de reconhecimento do analisador sintático. Este procedimento é
...