Zusammenfassung der Ressource
Compilador
- Pré-processador
Anmerkungen:
- Tratamento pré-compilação: expansão de macros.
- Código fonte
(Macros expandidas)
- Compilador
Anmerkungen:
- Cada instrução de L1 é substituída por um conjunto de instruções em L0.
O programa vai ser traduzido uma unica vez e executado várias vezes.
- Assembly (Linguagem
de Montagem)
- Montador
Anmerkungen:
- - Traducao de uma linguagem de montagem (assembly) para codigo de maquina.
- Nao pode ser executado diretamente pela maquina, por conter referencias a sub-rotinas e dados.
- Relacao 1:1 linguagem de montagem com linguagem de maquina
- E dependente da arquitetura da maquina.
Programacao dificil
- Objeto
- LinkEditor (Ligador)
Anmerkungen:
- - Programa que liga objetos gerados por um compilador ou montador e gera um executável.
- Recebe como entrada arquivos objetos e geram como saída o programa final em linguem de máquina.
- Gera um programa executável a partir de um ou mais arquivos objetos.
Resolução das chamadas das funções através da unificação dos objetos num único executável.
- Executável
- Empacotador (packer)
Anmerkungen:
- - Compacta um executável e gera outro.
- Packer muda a assinatura do executável.
- Possibilita a criação de vírus com assinaturas diferentes.
- Comprimem, cifram e ofuscam o executável.
- Dificultam a identificação do compilador usado por ferramentas adequadas.
- Impossibilitam a análise estática, pois o packer é quem se torna o ator principal
- Carregador (Loader)
Anmerkungen:
- - Para executar um programa, um loader deve ser utilizado. O carregador é, em geral, parte do SO.
- Copia o arquivo em formato binário para a memória.
- Binários / absolutos
Anmerkungen:
- Programa que usa carregadores absolutos é associado com localização específica de memória, e por isso deve sempre ser carregados na mesma área de memória. (.COM)
- Relocáveis
Anmerkungen:
- O programa executável relocável é semelhante ao programa executável absoluto, exceto que os endereços são todos relativos a zero (não são absolutos.) (.EXE)
- Memória
- Análise
Anmerkungen:
- Divide o programa fonte nas partes contituintes e cria uma representação intermediária
- Léxica (tokens: Tabela de simbolos)
- Sintática (árvore
sintática)
- Semântica (incoerência semÂntica)
- Síntese
Anmerkungen:
- Constrói o programa alvo desejado a partir da representação intermediária
- Geração do código intermediário
- Otimização do código
- Geração do código