Mind map
Geração de código e otimização de código
Map content
Geração de código e otimização de código
A primeira etapa da geração de código, a representação intermediária (RI), converte a AST para uma linguagem intermediária, com comandos mais simples do que a linguagem fonte.
A fase de otimização do código é muito mais complexa do que a de geração. Isso ocorre pois gerar (traduzir) é associar os comandos da linguagem de alto nível às instruções de baixo nível, percorrendo os nós da AST (Abstract Syntax Tree), enquanto otimizar requer a análise de várias propriedades de acordo com o tipo de estrutura gerada.
Propriedades
- Uma transformação precisa preservar o significado dos programas – durante o processo de otimização não podemos comprometer a execução do programa gerando códigos que não existiam no programa fonte.
- ma transformação precisa acelera o programa que será gerado, na média, e por um fator que possa ser mensurável – a eficiência média é o que importará neste ponto da otimização, pois nem sempre o fato de aumentarmos o número de instruções no processo de conversão de uma instrução da linguagem de alto nível para o código de máquina, ocupando mais memória, resulta em menor eficiência na média. Esse é um caso no qual se tenta alcançar uma eficiência média, mensurável pela taxa de crescimento (Big-Theta).
- Uma transformação deve valer o esforço – isso significa que o tempo que o compilador gastará para gerar o código alvo tem de ser compensado na eficiência do programa gerado
Linguagem de alto nível
- Linguagem de alto nível = linguagem fonte = código fonte = é o programa escrito pelo programador em uma linguagem com instruções fáceis de serem compreendidas pelos humanos, como a linguagem Java, Pascal, Python, C, C#.
Linguagem intermediária
- Linguagem intermediária = código intermediário = representação intermediária = RI = é um código mais simples para a máquina, gerado pelo compilador e independente do processador. O compilador faz isso depois da análise sintática e semântica, e utiliza as formas pós-fixa ou três endereços para conversão.
Linguagem intermediária
- Linguagem de baixo nível = código de máquina = código alvo = é o código que o computador consegue executar.
Complexidade de algoritmos
- Complexidade de algoritmos – analisa o custo de um algoritmo, com relação ao tempo gasto. Pior caso (Big-Ó), o melhor caso (Big-Ômega) e a taxa de crescimento (Big-Theta).
A geração do código deverá converter a RI para um código que possa ser executado na máquina de destino. São três ações no processo de geração do código alvo, definidas por Cooper (2014).
Processo de geração do código alvo
- Seleção de instrições
- Consiste em selecionar uma sequência de instruções da máquina alvo que implemente as operações de RI.
- Escalonamento de instruções
- Consiste em definir a ordem na qual as operações deverão ser executadas.
- Alocação de registros
- Consiste em definir quais valores deverão residir nos registradores em cada ponto do programa
- Seleção de instrições
Information
- Description
- Mind Map on Geração de código e otimização de código, created by Kykaze . on 12/05/2020.
- Created by
- Kykaze .
- Views
- 0
- Rating