Escolar Documentos
Profissional Documentos
Cultura Documentos
CARREGADORES E LIGADORES
Aulas 27 e 28
Revisão...
• Nas últimas aulas começamos o estudo dos SOFTWARES DE SISTEMA
Definem os endereços
LIGADOR\ adequados, transferem
o programa para a
CARREGADOR memória e iniciam sua
execução
ESQUEMAS DE CARREGAMENTO
MONTAGEM E CAREGAMENTO COMBINADOS
PROGRAMA ASSEMBLY
AND R1, #3
MOV R1 , R2
MONTADOR
SUB R2, #3
MUL R3 , R1, R2
transfere o programa
para a memória
ESQUEMAS DE CARREGAMENTO
CAREGAMENTO ABSOLUTO
CARREGADOR
transfere o programa
para a memória
ESQUEMAS DE CARREGAMENTO
CAREGAMENTO COM AJUSTE A REFERÊNCIAS
MÓDULO DE CARGA
- Define o endereço inicial de
instalação do programa na memória
(IPLA)
- Liga todos os segmentos que
compõe o programa;
LIGADOR - Aloca espaço na memória CARREGADOR
suficiente para carregar todos os
segmentos do programa;
- Define o endereço de cada símbolo
(rótulo);
transfere o programa
- Ajusta, no código, posições de
para a memória
memória que fazem referencias a
outras posições de memória;
MÓDULO OBJETO
MÓDULO OBJETO
ESD.´MAIN´.´SD´.0000.001C
TXT.0C.2.5E00
MÓDULOTXT.0E.4.06000030
OBJETO
RLD.14.4.´MAIN´
ESD.´MAIN´.´SD´.0000.001C
END.00
TXT.0C.2.5E00
TXT.0E.4.06000030
RLD.14.4.´MAIN´
END.00
MÓDULO OBJETO
MÓDULO OBJETO
• O que é?
ESD.´MAIN´.´SD´.0000.001C
- Código gerado pelo montador que possui todas as TXT.0C.2.5E00
informações necessárias para carregar o código na TXT.0E.4.06000030
memória e definir os endereços das variáveis (rótulos); RLD.14.4.´MAIN´
END.00
- Possui 4 tipos de registros:
ESD
Dicionário de Símbolos Externos
informações sobre o nome de um rótulo
TXT
Contém o código de máquina e sua localização relativa na memória
RLD
Posição relativa e dimensão das referências que precisam ser
ajustadas no código de máquina. Qual o valor (símbolo) usado
como base para este ajuste.
RLD . end relativo a ser ajustado . comprimento . símbolo usado para ajuste
END
Indica o fim do segmento/módulo
Passo 1 Passo 2
PASSO 1
GEST
SÍMBOLO END
MAIN 1000
PGM 101C
DIGIT 102C
PASSO 2
Posição 00 02 04 06 08 0A 0C 0E
1000 1039 0000 0000 0C00 000A 6D02 5E00 0600
1010 0030 13C0 0000 001A 4E75 0000 3039 0000
1020 000E 33C0 0000 0010 4E75 0000 0000
EXEMPLO •
•
O PLA foi definido como 1000
• Ao final do processamento, o montador gerou os seguintes segmentos: Main será carregado seguido
pelo PGM
PASSO 1
GEST
SÍMBOLO END
MAIN 1000
PGM 101C
DIGIT 102C
PASSO 2
Posição 00 02 04 06 08 0A 0C 0E
1000 1039 0000 0000
102C 0C00 000A 6D02 5E00 0600
1010 0030 13C0 0000 101A
001A 4E75 0000 3039 0000
1020 102A
000E 33C0 0000 102C
0010 4E75 0000 0000
BIBLIOTECAS
• Conforme vimos no capítulo de Subrotinas, um programa pode solicitar diversas
Rotinas de Serviço durante a sua execução;
• Estas Rotinas de Serviço ajudam a enxugar o código já que evitam que
programador fique repetindo uma mesma parte do código diversas vezes;
• Muitas dessas Rotinas de Serviço podem ser utilizadas por programas diferentes
já que, muitas vezes, são rotinas de uso comum que fazem operações
elementares: funções de E/S, matemáticas, etc;
• Desta forma, os Sistemas Operacionais possuem Bibliotecas que contém estas
Rotinas de Serviço já em forma de Módulo Objeto, eliminando a necessidade
de montá-las;
• A leitura destes Módulos Objetos podem se dar em dois momentos:
Windows Linux
Biblioteca DLL Biblioteca ELF
(Dynamic Link Library) (Executable and Linkable Format)
- O módulo objeto é lido e as referências - O módulo objeto só é lido se durante
dos símbolos são todas definidas em a execução seus símbolos forem
tempo de carregamento (antes da referenciados (Tempo de Execução)
execução)
CONCLUSÕES
• O objetivo da disciplina EA869 foi apresentar como se organizam os Sistemas de Computação Digital;
• Após uma contextualização histórica, começamos nosso estudo sobre os possíveis problemas que um
computador pode ou não pode resolver;
• Definidas as arquiteturas, vimos como as instruções podem ser executadas de forma eficiente
(pipeline) e como códigos podem ser escritos também de forma eficiente (subrotinas);
• Seguimos estudando como o processador trata sinais externos: as interrupções; e como se comunica
com dispositivos de entrada e saída (periféricos);
• Por fim, estudamos os Softwares de Sistema, os quais são responsáveis por gerenciar o hardware de um
sistema computacional;
• Toda esta teoria foi ilustrada na prática com o uso de um simulador de um processador ARM;
• A última aula desta disciplina se dará no laboratório de computação digital e terá como objetivo
prepará-los para a disciplina de EA871, além de vermos na prática como se programa um processador
ARM;
FIM