1 / 31

Software Básico

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

tarika
Download Presentation

Software Básico

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Software Básico Aula 10: Características dependentes da máquina Silvio Fernandes 2009.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

  3. Relocação • Os loaders que permitem relocação são chamados de loadersrelocadores 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

  4. Relocação

  5. Relocação

  6. Relocação

  7. Relocação • 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

  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

  9. Relocação

  10. Relocação

  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

  12. Relocação

  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

  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

  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

  16. Link de programas

  17. Link de programas

  18. Link de programas

  19. Link de programas • Programa-objeto de PROGA

  20. Link de programas • Programa-objeto de PROGB

  21. Link de programas • Programa-objeto de PROGC

  22. Link de programas • No 1º programa (PROGA), REF1 é uma referência a um label dentro do programa, então é montada de maneira tradicional • No PROGB o mesmo operando se refere a um símbolo externo • 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 PROGC

  23. Link de programas • A REF2 no PROGA é formada por uma referência externa mais uma constante • 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)

  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)

  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

  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

  27. Link de programas

  28. Link de programas

  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

  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

  31. Referências • Leland L Beck. “Desenvolvimento de software básico”. 2ª ed. Rio de Janeiro: Campus, 1993. 525p.

More Related