Arquitetura de Computadores


1
Ricardo de Sousa Britto
Nível da Linguagem de Montagem
Introdução





2
Tradução: Converte um programa fonte em um
programa objeto
Duas etapas: Geração de programa em linguagem
alvo; Execução do programa.
Dois tipos: Compilador e Montador
Compilador: Linguagem fonte = Alto nível
Montador: Linguagem fonte = representação
simbólica da linguagem de montagem (Assembly)
Vantagens




3
Código mais eficiente
Algumas máquinas podem não ter um
compilador
Acesso direto aos recursos de nível ISA
Uma linha de programa = Uma linha de
programa objeto
Desvantagens



4
Maior complexidade de programação
Custo maior de desenvolvimento
Código não portável
Formato de um comando em Assembly
5
Campos de uma instrução Assembly




6
Label: Nome simbólico atribuído a um
endereço.
Operação: Abreviação simbólica do
OPCODE. Ex: ADD = soma.
Operando: especifica simbolicamente os
endereços, registradores ou constantes.
Comentários: Documenta o programa.
Ignorado pelo montador.
Processo de montagem



7
Montagem: tradução de programa fonte em
programa objeto.
Problema da referência futura: Desvios para
posições representadas por símbolos ainda
indefinidos
Solução: Tradução em Dois passos
Passo 1



8
Analisa-se as instruções, até encontrar uma
pseudo-instrução END.
Usando uma tabela de códigos de operação,
o montador constrói uma tabela de símbolos.
Tabela de símbolos é utilizada no Passo 2 da
montagem.
Tabela de Símbolos



9
O contador de localização de instrução (ILC),
zerado no início do passo 1, é incrementado
do comprimento da instrução corrente.
O ILC provê o endereço de execução da
instrução montada.
A tabela de símbolos é com base no ILC
Formato de uma entrada da TS
10
Passo 2



11
Gera o programa objeto. Produz a expansão
binária da instrução a partir das tabelas.
Produz informações necessárias ao
procedimento de ligação.
Gera mensagens de erro caso estes existam
no programa fonte.
Ligação e Carga




12
Programas podem ser constituídos de vários
procedimentos.
Todos os procedimentos devem ser ligados em um
único programa a ser executado.
O software que faz a ligação dos procedimentos é
chamado de ligador.
É produzido um único programa, o Módulo Absoluto
de carga, a partir de vários módulos objetos
Ligação e Carga


13
Módulos objetos são obtidos a partir da
tradução dos vários procedimentos.
Um software denominado carregador
carrega o Módulo de carga na memória
principal para posterior execução.
Ligação e Carga
14
Ligação e Carga



15
O ligador une todos os modelos objetos em
um único espaço de endereçamento.
As referências a endereços devem ser
atualizadas (Problema de realocação)
Quando um procedimento A chama um B, o
endereço absoluto de B só conhecido após a
ligação (Problema da referência externa)
Tarefas do Ligador




16
Construir uma tabela com todos os módulos
objeto e seus respectivos comprimentos.
Atribuir um endereço de carga.
Adicionar uma constante de relocação ao
endereço inicial de cada módulo.
Encontrar todas as instruções que
referenciam outros procedimentos e inserir
nelas endereço absoluto dos mesmo
Módulos objeto
17
Módulo de carga
18
Funcionamento do Ligador

A maioria dos ligadores requer 2 passos:
–
–
19
Ler todos os módulos objeto, construir uma tabela
de nomes e comprimentos de módulos e uma
tabela global de símbolos internos e externos
Ler os módulos objeto, relocá-los e ligá-los para
formar um único módulo
Estrutura de um módulo objeto
20
Tabela de módulos objeto
21
Módulo
Comprimento
Endereço
A
400
100
B
600
500
C
500
1100
D
300
1600
Ligação Dinâmica



22
Ligação de procedimentos compilados
separadamente no momento em que esses
são chamados pela primeira vez.
Procedimentos raramente utilizados são
ligados só se necessários.
Melhor aproveitamento da memória virtual.
Download

Montagem