Montagem

  • 123 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
123
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Nível de Montagem
    • Descreveremos agora, ainda que de forma bastante superficial, um dos níveis acima do nível em que estão os macroprogramas
    • 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
    • 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”
  • 2.
    • Um fator importante sobre a maioria dos programas é a distribuição irregular do tempo de execução em cada parte dos mesmos
    • É possível que 90% do tempo de execução de um programa seja decorrido apenas em 10% do seu total
    • Utilizando o conceito de Program Tuning (afinação do programa), separam-se então esses 10% do programa e tenta-se otimizá-lo
    • Sem dúvidas, uma opção muito mais viável do que procurar por possíveis otimizações no programa inteiro
  • 3.
    • Passando ao processo de montagem em si, esta é geralmente feita em dois passos principais
    • No primeiro passo, o montador lê o programa e constrói a tabela de símbolos
    • Você deve se lembrar de que programas em Assembly possuem diversos labels , que particularizam linhas e direcionam a execução para essas linhas
    • 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
  • 4.
    • 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
    • É 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)
    • Entre essas informações estão os operandos, o código da operação hexadecimal e o tamanho da instrução em bytes
  • 5.
    • Na segunda leitura do programa, ainda falando sobre o primeiro passo, cada procedimento do programa é traduzido pelo montador (ou tradutor, ou ainda, compilador)
    • Os códigos gerados, chamados módulos objetos são conectados por um linker (ligador), gerando o executável
  • 6.
    • 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
    • O executável gerado é também chamado módulo absoluto de carga
    • 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
  • 7.
    • As duas imagens
    • ao lado representam
    • a sequência de mó-
    • dulos antes da inter-
    • venção do linker e
    • depois, respectiva-
    • mente da esquerda
    • para a direita