Montagem

7
Nível de Montagem 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” 1

Transcript of Montagem

Page 1: Montagem

Nível de MontagemNí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” 1

Page 2: Montagem

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

2

Page 3: Montagem

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

3

Page 4: Montagem

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

4

Page 5: Montagem

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

5

Page 6: Montagem

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

6

Page 7: Montagem

As duas imagensao lado representama sequência de mó-dulos antes da inter-venção do linker edepois, respectiva-mente da esquerdapara a direita

7