Skip to content

Commit

Permalink
atualizando plano
Browse files Browse the repository at this point in the history
  • Loading branch information
leopoldomt committed Feb 26, 2024
1 parent 3eb645d commit beb3cf7
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 4 deletions.
35 changes: 35 additions & 0 deletions 2024-02-15.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# IF688 - Teoria e Implementação de Linguagens Computacionais

## Introdução a Otimização de Código

### Objetivo

O objetivo desta aula é introduzir o conceito de otimização de código, discutindo otimizações locais em particular, além de apresentar o conceito de _Static Single Assignment_ (SSA) como representação intermediária de código para expor otimizações.

### Questões para Discussão

- Quais tipos de otimizações podemos efetuar em código?
- Em que nível de abstração devemos realizar otimizações?
- Qual o principal preceito associado à aplicação de otimizações?
- Quais os diferentes níveis de granularidade onde podemos aplicar otimizações?
- Qual a principal vantagem de utilizar _Static Single Assignment_ como representação intermediária de código?
- Como implementar otimizações locais?
- Como implementar eliminação de expressões redundantes usando _Local Value Numbering_?
- Quais os pormenores de _Local Value Numbering_?

### Material usado em sala de aula

- [Slides](https://drive.google.com/file/d/1j2rCNcLbRzEfxd5GfggizphloYTo6k7t/view)

### Vídeos
- [Introdução à Análise e Otimização de Código](https://www.youtube.com/watch?v=84EGVK1UlDA)
- [Otimizações Locais](https://www.youtube.com/watch?v=_d3iWKx-xDI)
- [Exemplo de Otimizações Locais interagindo](https://youtu.be/wXepvg3SneE)
- [Local Value Numbering](https://youtu.be/9BHK3q_2BGQ)

### Links Relacionados

- [Optimizing Compiler](https://en.wikipedia.org/wiki/Optimizing_compiler)
- [Static Single Assignment](https://en.wikipedia.org/wiki/Static_single_assignment_form)
- [Common subexpression elimination](https://en.wikipedia.org/wiki/Common_subexpression_elimination)
- [Constant folding](https://en.wikipedia.org/wiki/Constant_folding)
40 changes: 40 additions & 0 deletions 2024-02-20.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# IF688 - Teoria e Implementação de Linguagens Computacionais

## Otimizações Globais e _Data-flow Analysis_

### Objetivo

O objetivo desta aula é apresentar o conceito de otimizações globais, envolvendo um CFG inteiro, bem como introduzir o conceito de análise de fluxo de dados, como forma de calcular informações necessárias para aplicar otimizações. Na aula discutimos duas análises simples que diferem na forma como a informação é propagada, sendo _global constant propagation_ um exemplo onde usamos o conceito de análises de fluxo de dados _forward-flow_, enquanto _liveness_ é usada como estudo de caso para análises _backward-flow_.

### Questões para Discussão

- O que distingue otimização local de global?
- Como definir uma análise de fluxo de dados iterativa?
- Quais os desafios associados à definição de análises globais?
- O que significa definir uma análise conservadora?
- Como aplicar otimizações baseadas nos resultados de análises de fluxo de dados?
- Como utilizar funções de transferência para calcular informação de propagação de constantes?
- Qual a intuição para afirmar que uma análise de fluxo de dados interativa termina?
- Como definir se uma variável está viva ou morta?
- Por qual razão é necessário que a análise seja feita de maneira _backwards_?
- Como seria a definição de liveness para uma variável `x` em um statement `S`?
- Como computar liveness?

### Material usado em sala de aula

- [Slides](https://drive.google.com/file/d/11T_1OMQRNLgrZffp7KNEWHEyuNi1BLju/view)

### Vídeos

- [Otimizações Globais (intraprocedural)](https://www.youtube.com/watch?v=5QCPI-tLaig)
- [Expressando critérios de corretude](https://www.youtube.com/watch?v=gJzEQc3pmpo)
- [Global Constant Propagation](https://www.youtube.com/watch?v=WrUgJ8dedQw)
- [Criando funções de transferência para Global Constant Propagation](https://www.youtube.com/watch?v=FcXLDT34WUY)
- [Algoritmo de ponto fixo para calcular valores constantes em variáveis](https://www.youtube.com/watch?v=U1RGdehABYE)
- [Introdução a Liveness](https://youtu.be/_7jahD1WmQI)
- [Calculando Liveness entre instruções](https://youtu.be/--OoAmvAdUQ)

### Links Relacionados

- [Data-flow Analysis](https://en.wikipedia.org/wiki/Data-flow_analysis)
- [Live variable analysis](https://en.wikipedia.org/wiki/Live_variable_analysis)
28 changes: 28 additions & 0 deletions 2024-02-22.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# IF688 - Teoria e Implementação de Linguagens Computacionais

## Representando funções de transferência entre blocos básicos

### Objetivo

O objetivo desta aula é reforças a definição de funções de transferência, representadas por meio de equações que estabelecem como informação flui entre blocos básicos, usando _liveness_ e _dominance_ como estudos de caso.

### Questões para Discussão

- Como definir se uma variável está viva ou morta?
- Como representar análises com equações?
- O que significa _dominance_ para um bloco básico?

### Material usado em sala de aula

- [Slides](https://drive.google.com/file/d/15IKH1C-fWdYtP57mJ-H6at7wZLvVNSuO/view)

### Vídeos

- [Calculando Liveness de múltiplas variáveis entre blocos básicos](https://youtu.be/JbfOmxBLWCg)
- [Usando Liveness para detectar variáveis não inicializadas](https://youtu.be/cKJ_YahGqPU)
- [Dominance](https://youtu.be/PPhPov2oiec)

### Links Relacionados

- [Data-flow Analysis](https://en.wikipedia.org/wiki/Data-flow_analysis)
- [Live variable analysis](https://en.wikipedia.org/wiki/Live_variable_analysis)
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,11 @@ Na disciplina, utilizaremos uma mistura de aulas tradicionais com exercícios e
| 30.01.24 | Terça | [Representação Intermediária de Código](2024-01-30.md) | |
| 01.02.24 | Quinta | [Representação Intermediária de Código](2024-01-30.md) | |
| 06.02.24 | Terça | [APS - ANTLR](2024-02-06.md) | |
| 08.02.24 | Quinta | APS - LLVM | |
| 08.02.24 | Quinta | APS - ANTLR | |
| 13.02.24 | Terça | **CARNAVAL** | |
| 15.02.24 | Quinta | Análise e Otimização de Código | |
| 20.02.24 | Terça | Análise e Otimização de Código | |
| 22.02.24 | Quinta | Análise e Otimização de Código | |
| 15.02.24 | Quinta | [Análise e Otimização de Código](2024-02-15.md) | |
| 20.02.24 | Terça | [Análise e Otimização de Código](2024-02-20.md) | |
| 22.02.24 | Quinta | [Análise e Otimização de Código](2024-02-22.md) | |
| 27.02.24 | Terça | Ambientes de Execução | |
| 29.02.24 | Quinta | Ambientes de Execução | |
| 05.03.24 | Terça | Geração de Código | |
Expand Down

0 comments on commit beb3cf7

Please sign in to comment.