Nível de Montagem <ul><li>Descreveremos agora, ainda que de forma bastante superficial, um dos níveis acima do nível em qu...
<ul><li>Um fator importante sobre a maioria dos programas é a distribuição irregular do tempo de execução em cada parte do...
<ul><li>Passando ao processo de montagem em si, esta é geralmente feita em dois passos principais </li></ul><ul><li>No pri...
<ul><li>Por isso, é necessário que a tabela de símbolos seja criada. Esta tabela nada mais é do que uma associação entre o...
<ul><li>Na segunda leitura do programa, ainda falando sobre o primeiro passo, cada procedimento do programa é traduzido pe...
<ul><li>A tradução dos procedimentos para os módulos objeto representa uma mudança de níveis. É como se fossem partes do m...
<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...
Upcoming SlideShare
Loading in …5
×

Montagem

191 views
162 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
191
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for 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>

×