Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouBrian Sago 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 10: Características dependentes da máquina 1
2
Características dependentes da máquina O loader absoluto é simples e eficiente, entretanto é necessário que o programador especifique o endereço real onde o programa será carregado O compartilhamento eficiente de recursos da máquina exige programas relocáveis Programas absolutos dificulta o uso de bibliotecas de sub-rotinas – É importante escolher e carregar apenas rotinas que pretendemos incorporar ao programa 2
3
Relocação Os loaders que permitem relocação são chamados de loaders relocadores ou loaders relativos O 1º método é o uso de registro de modificação usado para descrever cada parte do Código Obejto (CO) que deve ser alterada quando o programa for relocado As figuras a seguir mostram um código-fonte e o respectivo código-objeto 3
4
Relocação 4
5
5
6
6
7
Cada registro de modificação especifica o endereço inicial e o tamanho do campo cujo valor deve ser alterado Em seguida descreve a modificação que será realizada (soma com o símbolo COPY, que representa o endereço inicial do programa) Registro de modificação é conveniente mas não se adapta bem a todas as máquinas 7
8
Relocação Considere o programa da Figura a seguir É o mesmo do exemplo anterior, exceto que está escrito para SIC standard que não usa endereçamento relativo Então o endereço de todas as instruções, exceto RSUB têm que ser modificados Isto exigiria o uso de 31 registros de modificação, e o PO mais que dobraria de tamanho 8
9
Relocação 9
10
10
11
Relocação Num computador que use principalmente endereçamento direto, será mais eficiente especificar a relocação através de bits de relocação, sem necessidade de registro de modificação Nesse método são usados bits de relocação associados a cada palavra do código-objeto (1 bit de relocação para cada instrução possível) Os bits relocação são unidos numa máscara de bits 11
12
Relocação 12
13
Relocação Se o bit de relocação for 1, o endereço inicial do programa será somada a esta palavra Se for 0, nenhuma modificação será necessária Alguns computadores possuem o recurso de relocação controlada por hardware, o que elimina a necessidade de se atribuir ao loader essa tarefa de relocação de programas 13
14
Link de programas O programador tem uma inclinação natural a enxergar o programa como uma entidade lógica que combina todas as seções de controle iterrelacionadas Mas sob o ponto de vista do loader existem apenas seções de controle que devem ser interligadas, relocadas e carregadas O loader não tem como saber quais são as seções que foram montadas ao mesmo tempo 14
15
Link de programas Considere os 3 programas (montados separadamente) a seguir, cada um deles contendo uma única seção de controle Cada programa contém uma lista de itens (LISTA, LISTB, LISTC), o final destas listas é assinalado pelos labels ENDA, ENDB, ENDC Os labels no início e no fim das listas são símbolos externos 15
16
Link de programas 16
17
Link de programas 17
18
Link de programas 18
19
Link de programas Programa-objeto de PROGA 19
20
Link de programas Programa-objeto de PROGB 20
21
Link de programas Programa-objeto de PROGC 21
22
Link de programas No 1º programa (PROGA), REF1 é uma referência a um label dentro do programa, então é montada de maneira tradicionalPROGA No PROGB o mesmo operando se refere a um símbolo externoPROGB – O assembler usa uma instrução no formato estendido com o campo de endereço definido como 000000 Esta referência é tratada de modo exatamente igual em PROGCPROGC 22
23
Link de programas A REF2 no PROGA é formada por uma referência externa mais uma constantePROGA – O assembler armazena o valor da constante no campo de endereço da instrução e um registro de Modificação instrui o loader para que some a este campo o valor de LISTB REF3 é um operando imediato cujo valor deverá ser a diferença entra ENDA e LISTA (tamanho da lista em bytes) 23
24
Link de programas PROGA dispõe de todas as informações para calcular REF3 Enquanto que em PROGB e PROGC os valores dos labels são desconhecidos, assim a instrução tem que ser montada como referência externa (com 2 registros de modificação)PROGB PROGC 24
25
Link de programas O assembler do PROGA consegue avaliar todas as expressões em REF4 menos o valor de LISTC – Assim, chega-se ao valor 000014 (hexa) e um registro de modificação A mesma expressão em PROGB não contém nenhum termo, assim o CO contém 000000 e 3 registros de modificação Em PROGC, o assembler pode fornecer o valor de LISTC com relação ao início do programa 25
26
Link de programas O valor desta palavra em PROC contém o endereço relativo de LISTC 000030 (hexa) REF4 representa uma referência externa simples em PROGA, uma referência externa complicada para PROGB e uma combinação de relocação e referência externa para PROGC A fig. a seguir mostra os 3 programas na memória, tal como estariam depois da carga e do link 26
27
Link de programas 27
28
Link de programas 28
29
Link de programas PROGA foi carregado a partir do endereço 4000, com PROGB e PROGC imediatamente após Repare que de REF4 a REF8 (depois da relocação e do link) os valores resultantes em todos os programas foram iguais No caso de referências que são operandos de instruções, os valores calculados depois da carga nem sempre parecem iguais 29
30
Link de programas Isso acontece porque há um passo a mais no cálculo do endereço envolvido em instruções que usam o endereçamento relativo ao contador de programa ou à base Nesses casos, são os endereços-alvos que ficam iguais 30
31
Referências Leland L Beck. Desenvolvimento de software básico. 2ª ed. Rio de Janeiro: Campus, 1993. 525p. 31
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.