A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.

Apresentações semelhantes


Apresentação em tema: "Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula."— Transcrição da apresentação:

1 Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula 11: Características dependentes da máquina II 1

2 Tabelas e lógica de um linking loader Usamos registros de modificação para a relocação de modo que as funções de link e relocação sejam executadas através do mesmo mecanismo Máquinas desse tipo empregam o endereçamento relativo e tornam desnecessária a relocação dos endereços da maioria das instruções 2

3 Tabelas e lógica de um linking loader O algoritmo de um linking loader é bastante mais complicado que o algoritmo do loader absoluto A entrada de linking loader é um conjunto de programas-objetos (seções de controle) que devem ser linkados Eles costumam fazer 2 passagens sobre a entrada: 1 para atribuir endereços a todos os símbolos e outra para fazer a carga, a relocação e o link propriamente ditos 3

4 Tabelas e lógica de um linking loader A principal estrutura de dados necessária para o nosso linking loader é uma tabela externa de símbolos (ESTAB) Usada para armazenar o nome e o endereço de cada símbolo externo no conjunto de seções de controle que estão sendo carregadas, além do indicar em que seção cada símbolo é definido Organizada na forma de um hash table 4

5 Tabelas e lógica de um linking loader Possui 2 variáveis importantes – PROGADDR (endereço de carga do programa) Endereço inicial da memória onde o programa linkado será carregado, cujo valor é fornecido pelo SO – CSADDR (endereço de seção de controle) Contém o endereço inicial associado a seção de controle que está sendo lida pelo loader, cujo valor é somado a todos os endereços relativos dentro da seção de controle de modo a convertê-los em endereços reais 5

6 Tabelas e lógica de um linking loader 6

7 7

8 Durante a passagem 1 o loader se preocupa apenas com os registros de Cabeçalho e Definição das seções de controle O endereço inicial de carga do programa linkado (PROGADDR) se torna o endereço (CSADDR) da 1ª seção de controle O nome da seção indicado no registro de Cabeçalho é incluído em ESTAB, com o valor dado por CSADDR 8

9 Tabelas e lógica de um linking loader Todos os símbolos externos que aparecem no registro de Definição também são incluídos em ESTAB Seus endereços são obtidos somando-se o valor especificado no registro de Definição a CSADDR Quando o registro Fim é lido, o tamanho da seção CSLTH (obtino no Cabeçalho) é somado a CSADDR para calcular o endereço da próxima seção de controle 9

10 Tabelas e lógica de um linking loader Vários loader oferecem a opção de impressão de um mapa de carga que mostra estes símbolos e seus endereços, para depuração 10

11 Tabelas e lógica de um linking loader A passagem 2 faz a relocação e o link propriamente ditos A medida que cada registro de Texto é lido, o código-objeto é movido para o endereço especificado (mais o valor atual de CSADDR) Quando um registro de Modificação é encontrado, o símbolo cuja valor de ser usado para a modificação é pesquisado em ESTAB, que é somado ou subtraído da posição de memória indicada 11

12 Tabelas e lógica de um linking loader A última atividade é, geralmente, a passagem de controle para o programa carregado, dando início à sua execução O registro de Fim de cada seção pode conter o endereço da primeira instrução a ser executada dentro da seção correspondente Nosso loader considera que este é o ponto de transferência para o início da execução 12

13 Tabelas e lógica de um linking loader Se mais de uma seção especificar um ponto de transferência, o loader utilizará arbitrariamente o último endereço encontrado Se nenhuma seção especificar um ponto de transferência, o loader usará o início do programa linkado como ponto de transferência 13

14 Referências Leland L Beck. Desenvolvimento de software básico. 2ª ed. Rio de Janeiro: Campus, p. 14


Carregar ppt "Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula."

Apresentações semelhantes


Anúncios Google