1 arquitetura de computadores ricardo de sousa britto nível da linguagem de montagem

22
1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

Upload: internet

Post on 17-Apr-2015

114 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

1

Arquitetura de Computadores

Ricardo de Sousa Britto Nível da Linguagem de Montagem

Page 2: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

2

Introdução

Tradução: Converte um programa fonte em um programa objeto

Duas etapas: Geração de programa em linguagem alvo; Execução do programa.

Dois tipos: Compilador e Montador Compilador: Linguagem fonte = Alto nível Montador: Linguagem fonte = representação

simbólica da linguagem de montagem (Assembly)

Page 3: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

3

Vantagens

Código mais eficiente Algumas máquinas podem não ter um

compilador Acesso direto aos recursos de nível ISA Uma linha de programa = Uma linha de

programa objeto

Page 4: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

4

Desvantagens

Maior complexidade de programação Custo maior de desenvolvimento Código não portável

Page 5: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

5

Formato de um comando em Assembly

Page 6: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

6

Campos de uma instrução Assembly

Label: Nome simbólico atribuído a um endereço.

Operação: Abreviação simbólica do OPCODE. Ex: ADD = soma.

Operando: especifica simbolicamente os endereços, registradores ou constantes.

Comentários: Documenta o programa. Ignorado pelo montador.

Page 7: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

7

Processo de montagem

Montagem: tradução de programa fonte em programa objeto.

Problema da referência futura: Desvios para posições representadas por símbolos ainda indefinidos

Solução: Tradução em Dois passos

Page 8: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

8

Passo 1

Analisa-se as instruções, até encontrar uma pseudo-instrução END.

Usando uma tabela de códigos de operação, o montador constrói uma tabela de símbolos.

Tabela de símbolos é utilizada no Passo 2 da montagem.

Page 9: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

9

Tabela de Símbolos

O contador de localização de instrução (ILC), zerado no início do passo 1, é incrementado do comprimento da instrução corrente.

O ILC provê o endereço de execução da instrução montada.

A tabela de símbolos é com base no ILC

Page 10: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

10

Formato de uma entrada da TS

Page 11: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

11

Passo 2

Gera o programa objeto. Produz a expansão binária da instrução a partir das tabelas.

Produz informações necessárias ao procedimento de ligação.

Gera mensagens de erro caso estes existam no programa fonte.

Page 12: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

12

Ligação e Carga

Programas podem ser constituídos de vários procedimentos.

Todos os procedimentos devem ser ligados em um único programa a ser executado.

O software que faz a ligação dos procedimentos é chamado de ligador.

É produzido um único programa, o Módulo Absoluto de carga, a partir de vários módulos objetos

Page 13: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

13

Ligação e Carga

Módulos objetos são obtidos a partir da tradução dos vários procedimentos.

Um software denominado carregador carrega o Módulo de carga na memória principal para posterior execução.

Page 14: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

14

Ligação e Carga

Page 15: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

15

Ligação e Carga

O ligador une todos os modelos objetos em um único espaço de endereçamento.

As referências a endereços devem ser atualizadas (Problema de realocação)

Quando um procedimento A chama um B, o endereço absoluto de B só conhecido após a ligação (Problema da referência externa)

Page 16: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

16

Tarefas do Ligador

Construir uma tabela com todos os módulos objeto e seus respectivos comprimentos.

Atribuir um endereço de carga. Adicionar uma constante de relocação ao

endereço inicial de cada módulo. Encontrar todas as instruções que

referenciam outros procedimentos e inserir nelas endereço absoluto dos mesmo

Page 17: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

17

Módulos objeto

Page 18: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

18

Módulo de carga

Page 19: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

19

Funcionamento do Ligador

A maioria dos ligadores requer 2 passos:– Ler todos os módulos objeto, construir uma tabela

de nomes e comprimentos de módulos e uma tabela global de símbolos internos e externos

– Ler os módulos objeto, relocá-los e ligá-los para formar um único módulo

Page 20: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

20

Estrutura de um módulo objeto

Page 21: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

21

Tabela de módulos objeto

Módulo Comprimento Endereço

A 400 100

B 600 500

C 500 1100

D 300 1600

Page 22: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem

22

Ligação Dinâmica

Ligação de procedimentos compilados separadamente no momento em que esses são chamados pela primeira vez.

Procedimentos raramente utilizados são ligados só se necessários.

Melhor aproveitamento da memória virtual.