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 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


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