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
Annotations:
- 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)
Annotations:
- 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)
Annotations:
- 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)
Annotations:
- 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
Annotations:
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
Annotations:
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
Annotations:
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
Annotations:
Constrói o programa alvo desejado a partir da representação intermediária