-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDescrição.txt
More file actions
119 lines (94 loc) · 4.77 KB
/
Copy pathDescrição.txt
File metadata and controls
119 lines (94 loc) · 4.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
UNIVERSIDADE FEDERAL DO CEARÁ – CAMPUS QUIXADÁ
CURSO DE ENGENHARIA DE COMPUTAÇÃO
DISCIPLINA: COMPILADORES
PROFESSOR: LUCAS ISMAILY BEZERRA FREITAS
ALUNA: Ana Alicy Ribeiro dos Santos
Ana Beatriz Leite Damascena
Kaylane Castro Evangelista
TRABALHO II – ANÁLISE DE FLUXO DE DADOS
------------------------------------------------------------
ESTRUTURA DO PROJETO
------------------------------------------------------------
trabalho2/
├── integrantes.txt -> Identificação das alunas
├── instrucoes para execucao.txt -> Orientações sobre compilação e uso dos códigos
├── relatorios/ -> Relatórios explicativos de cada questão
├── src/ -> Diretório com os códigos-fonte das 3 análises
│ ├── Analise de Longevidade/
│ │ ├── analise_longevidade.cpp
│ │ ├── analise_longevidade -> binário gerado
│ │ ├── Analise_Longevidade -> binário alternativo
│ │ ├── analises_fluxo -> binário alternativo
│ │ ├── entrada.txt -> arquivo de entrada local
│ │ ├── Exemplos_testes.txt -> exemplos ou instruções de uso
│ │ └── Makefile
│ │
│ ├── Available Expressions/
│ │ ├── available_expressions.cpp
│ │ ├── entrada.txt -> arquivo de entrada local
│ │ ├── outras entradas.txt -> arquivo com outras entradas para teste do codigo
│ │ ├── Makefile
│ │ └── available_expr -> binário gerado
│ │
│ └── Reaching Definitions/
│ ├── inc/ -> arquivos de cabeçalho (headers)
│ ├── obj/ -> arquivos objeto (.o)
│ ├── src/ -> arquivos .cpp
│ ├── tests/ -> arquivos .in (entrada) e .out (saída)
│ ├── exe -> binário gerado
│ └── Makefile
------------------------------------------------------------
OBJETIVO DO TRABALHO
------------------------------------------------------------
Este trabalho tem como objetivo implementar três análises clássicas
de fluxo de dados para compiladores, com base no livro:
"Compiladores: Princípios e Práticas", de Kenneth C. Louden (2ª edição),
e nos slides da disciplina.
Cada análise foi desenvolvida em um diretório próprio dentro de src/,
com entrada formatada conforme o enunciado e saída contendo os conjuntos
IN e OUT de cada bloco básico.
------------------------------------------------------------
QUESTÕES IMPLEMENTADAS
------------------------------------------------------------
1. Analise de Longevidade/
-> Implementa a Análise de Longevidade (Liveness Analysis)
-> Detecta variáveis que ainda serão usadas no futuro em um ponto do programa
2. Reaching Definitions/
-> Implementa o algoritmo de Definições Alcançantes
-> Detecta quais atribuições podem ter alcançado um ponto de uso da variável
3. Available Expressions/
-> Implementa o algoritmo de Expressões Disponíveis
-> Detecta expressões que já foram avaliadas e não foram invalidadas,
podendo ser reutilizadas sem reavaliação
------------------------------------------------------------
PADRÃO DE ENTRADA E SAÍDA
------------------------------------------------------------
A entrada é composta por blocos rotulados (ex: B1:), com instruções
em código de três endereços. Ao final, os sucessores de cada bloco
são indicados por linha, ou a entrada é lida de arquivos .in.
Exemplo de saída no terminal:
OUT[1] = { a+b c+d }
IN[1] = { a+b c+d t1+t2 }
Os conjuntos são calculados com base nas fórmulas de propagação até ponto fixo
utilizando GEN, KILL, IN e OUT conforme o livro de Louden.
------------------------------------------------------------
RELATÓRIOS
------------------------------------------------------------
Os relatórios contidos em `relatorios/` explicam:
- Como cada algoritmo funciona
- Como os blocos e conjuntos foram estruturados
- Capturas de tela, testes e justificativa do código conforme slides e livro
------------------------------------------------------------
ARQUIVO integrantes.txt
------------------------------------------------------------
Contém o nome completo das alunas responsáveis pelo desenvolvimento
do trabalho e entrega.
------------------------------------------------------------
REFERÊNCIAS
------------------------------------------------------------
- Kenneth C. Louden – Compiladores: Princípios e Práticas (2ª edição)
- Slides e PDFs fornecidos pelo professor:
- Conceitos de Otimização
- Análise de Fluxo de Dados
- Representação Intermediária
- Alocação de Registradores