Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouTheo Salas Alterado mais de 10 anos atrás
1
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 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, 1993. 525p. 14
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.