Aula13
Montadores, Ligadores e Carregadores
Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno
Visão geral
Fluxo da construção até a execução de um programa
Compiladores
Responsável pela tradução de um programa descrito em linguagem de alto nível para
Montadores (assembler)
Responsáveis pela tradução do programa escrito em linguagem assembly
Resultado é um programa em linguagem de máquina
Ligadores (linker / Link-editor)
Responsável por unir diferentes partes de um programa
Permite modularizar o desenvolvimento de um programa
Carregadores (loader)
Responsável pela transferência de um programa para a MP
Proposta de uso dos mecanismos
Arquitetura
Montador e Carregador integrados
Código Fonte
Montador
/
Carregador
Memória
Proposta de uso dos mecanismos
Arquitetura
Montador e Carregador independentes
Código Fonte
Montador
Memória
Executável
Carregador
(SO)
Proposta de uso dos mecanismos
Arquitetura
Montador, Ligador e Carregador independentes
Módulo A
Módulo B
Módulo Z
Montador
Montador
Montador
Objeto A
Objeto B
Objeto C
Ligador
Executável
Carregador
SO
Memória
Máquina hipotética
Arquitetura
Acumulador (16bits)
PC (16 bits)
Memória de 216 palavras de 16bits
3 formatos de instrução
Conjunto de instruções
Montador (Assembler)
Função
Traduzir programas escritos em linguagem de montagem
(assembly) para linguagem de máquina
Conceitos básicos
Sintaxe típica de programas de montagem
[rótulo] [operação] [operando1] [, operando2] ; comentário
Rótulo
Marcador empregado para definir um endereço da área de código
Operação
Opcodes simbólicos: mnemônico que representa uma instrução
Pseudo instrução: Operação que orienta a atuação do montador
Operandos
Registradores, constantes ou endereços de memória
Montador
Função básica
Substituir Opcodes / mnemônicos por instruções opcodes numéricos
Segue uma tabela de associações