next up previous
Next: Sistemas Operacionais Up: Exercícios Previous: Compiladores

Montadores e Carregadores

Exercícios complementares aos da apostila. Fique atento a novas edições desta lista.
1.
Explique detalhadamente o que é:
(a) montador;

(b) ligador;
(c) carregador;
(d) segmento;
(e) código objeto;
(f) código executável.

2.
Quais são as tarefas básicas de um carregador versátil para uso geral? Justifique a necessidade de cada uma delas. Dentre estas, quais são opcionais e quais são imprescindíveis?
3.
Quais são as tarefas básicas de um carregador absoluto? Em quais situações o uso do mesmo é recomendado? Quais os cuidados que devem ser tomados quando ele for utilizado?
4.
O que são carregadores de ligação direta? Descreva as suas vantagens e desvantagens. Qual seria o significado de termos no diretório RLD o identificador (ID) de um símbolo tipo LD (Local Definition) ? Como o montador faz para gerar o diretório RLD?
5.
Quais são as vantagens de separarmos as funções de um carregador entre 2 programas diferentes? Quais são as diferentes abordagens existentes para esta divisão?
6.
Quais são as diferenças entre carregadores dinâmicos e ligadores dinâmicos? Qual dos dois esquemas acima é mais vantajoso para um grande projeto de software que tenha inúmeros módulos? Por que?

7.
Explique qual a diferença entre

(a) o resultado gerado por um montador absoluto e um montador de ligação direta

(b) ajuste de relocação e ajuste de ligação

(c) ligação dinâmica em tempo de carga e em tempo de execução

8.
Justifique se as afirmações abaixo são verdadeiras ou falsas:

(a) A Tabela de Símbolos gerada por um montador é uma estrutura de dados usada internamente pelo montador, não sendo nunca incorporada ao módulo objeto gerado.

(b) Uma das vantagens do esquema de ligação dinâmica é a redução de tamanho de módulos objetos, uma vez que nestes a incorporação de códigos de outras rotinas é substituída por referências a estas rotinas.CSC

9.
Um montador de ligação direta aplicado a dois arquivos em linguagem simbólica do 68K gerou os seguintes módulos objetos:

Módulo 1 Módulo 2
0.'MAIN'.S.0000.001A 0.'CALC'.'S'.0000.0006
0.'RESULT'.L.0018.0002 1.0000.02.2200
1.0000.06.203900000014 1.0002.02.9081
1.0006.06.4EB900000000 1.0004.02.4E75
1.000C.06.33C000000018 3.00
1.0012.02.4E75  
1.0014.04.00004E75  
2.0002.04.'MAIN'  
2.0008.04.'CALC'  
2.000E.04.'MAIN'  
3.02.0000  

Passados como argumentos nessa ordem (módulo 1 seguido de módulo 2) para um carregador de ligação direta, obteve-se o endereço inicial de carga (IPLA) $0200. Com base nos fluxogramas apresentados em sala de aula e que documentam o funcionamento deste tipo de carregador, pergunta-se:

(a) qual o conteúdo da Tabela de Símbolos Externos Globais (GEST) gerada pelo carregador?

(b) O diagrama abaixo é um mapa de conteúdo da memória após o carregamento sem os ajustes de ligação e relocação. Indique neste mapa quais posições são ajustadas pelo carregador e qual o novo conteúdo destas posições.

  0 2 4 6 8 A C E
020- 2039 0000 0014 4EB9 0000 0000 33C0 0000
021- 0018 4E75 0000 4E75 0000 2200 9081 4E75


next up previous
Next: Sistemas Operacionais Up: Exercícios Previous: Compiladores
Marco A. Amaral Henriques
2007-02-14