Montagem

218 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
218
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Montagem

  1. 1. Nível de Montagem <ul><li>Descreveremos agora, ainda que de forma bastante superficial, um dos níveis acima do nível em que estão os macroprogramas </li></ul><ul><li>Os macroprogramas estão diretamente relacionados aos programas escritos em linguagem de montagem ( Assembly ), já que cada instrução em linguagem de montagem produz uma macroinstrução </li></ul><ul><li>A vantagem de se programar em Assembly está então somente na maior facilidade que se tem em usar nomes e endereços simbólicos em vez de apenas “zeros” e “uns” </li></ul>
  2. 2. <ul><li>Um fator importante sobre a maioria dos programas é a distribuição irregular do tempo de execução em cada parte dos mesmos </li></ul><ul><li>É possível que 90% do tempo de execução de um programa seja decorrido apenas em 10% do seu total </li></ul><ul><li>Utilizando o conceito de Program Tuning (afinação do programa), separam-se então esses 10% do programa e tenta-se otimizá-lo </li></ul><ul><li>Sem dúvidas, uma opção muito mais viável do que procurar por possíveis otimizações no programa inteiro </li></ul>
  3. 3. <ul><li>Passando ao processo de montagem em si, esta é geralmente feita em dois passos principais </li></ul><ul><li>No primeiro passo, o montador lê o programa e constrói a tabela de símbolos </li></ul><ul><li>Você deve se lembrar de que programas em Assembly possuem diversos labels , que particularizam linhas e direcionam a execução para essas linhas </li></ul><ul><li>Se o montador lesse o programa apenas uma vez e localizasse uma linha: JUMP LABEL1 , ele não saberia para onde direcionar a execução por não saber que linha é identificada por esse label </li></ul>
  4. 4. <ul><li>Por isso, é necessário que a tabela de símbolos seja criada. Esta tabela nada mais é do que uma associação entre os labels e o endereço da linha que eles referenciam </li></ul><ul><li>É criada também uma tabela de códigos , que armazena informações sobre os códigos simbólicos de operações, como por exemplo: ADD (soma) e JMP (jump, pular para uma linha indicada pelo label que vier a seguir) </li></ul><ul><li>Entre essas informações estão os operandos, o código da operação hexadecimal e o tamanho da instrução em bytes </li></ul>
  5. 5. <ul><li>Na segunda leitura do programa, ainda falando sobre o primeiro passo, cada procedimento do programa é traduzido pelo montador (ou tradutor, ou ainda, compilador) </li></ul><ul><li>Os códigos gerados, chamados módulos objetos são conectados por um linker (ligador), gerando o executável </li></ul>
  6. 6. <ul><li>A tradução dos procedimentos para os módulos objeto representa uma mudança de níveis. É como se fossem partes do macroprograma, os quais se tornam o macroprograma final através da junção pela qual o linker é responsável </li></ul><ul><li>O executável gerado é também chamado módulo absoluto de carga </li></ul><ul><li>O carregador é então responsável por carregar este módulo para a memória principal, e a partir daí inicia-se a execução do macroprograma tal qual estudamos até aqui </li></ul>
  7. 7. <ul><li>As duas imagens </li></ul><ul><li>ao lado representam </li></ul><ul><li>a sequência de mó- </li></ul><ul><li>dulos antes da inter- </li></ul><ul><li>venção do linker e </li></ul><ul><li>depois, respectiva- </li></ul><ul><li>mente da esquerda </li></ul><ul><li>para a direita </li></ul>

×