Você está na página 1de 34

Aula 18 Modos de Endereamento e Formato de Instrues

Sistemas de Computao I
Centro de Cincias Computacionais C3 - FURG

Modos de Endereamento - Notao

A = contedo do campo de endereo da instruo R = contedo do campo de endereo que referncia um registrador EA = endereo real (efetivo) da posio que contm o operando

Em sistemas sem memria virtual = Memria Principal ou Registrador Em sistemas com memria virtual = Endereo Virtual ou Registrador

(X) = contedo da posio de endereo X

Modos de Endereamento

Imediato Direto Indireto Registrador Indireto via Registrador Deslocamento (Indexado) Pilha

Endereamento Imediato

Operando parte da instruo Operando = A

Exemplo: ADD 5

Soma 5 ao contedo do acumulador 5 o operando imediato (A)

Sem referncia a memria Rpido Faixa limitada de valores

Endereamento Imediato - Diagrama


Instruo Opcode Operando

Mapeamento Direto

Campo de Endereo contm o endereo do operando Endereo Efetivo (EA) = campo de endereo (A) Exemplo: ADD A

Soma o contedo da posio de memria A ao acumulador Procura na memria o endereo A para o operando Add contents of cell A to accumulator Look in memory at address A for operand

Um acesso a memria para acessar o dado Sem clculos adicionais para determinar o endereo efetivo Espao de endereamento limitado

Diagrama do Mapeamento Direto


Instruo Opcode Endereo A Memoria

Operando

Mapeamento Indireto

Campo de endereo especifica o endereo de uma palavra de memria que contm o endereo do operando EA = (A)
Procure em A, encontre o endereo indicado no contudo de (A) e busque l o operando Exemplo: ADD (A) Soma o contedo da clula apontada pelo contedo da posio de memria A com o acumulador

Largo espao de endereamento : 2n onde n o tamanho da palavra Pode ser aninhado, multinvel, cascateado

Exemplo: EA = (((A)))

Exige mltiplos acessos a memria para obter o

Diagrama do Endereamento Indireto


Instruo Opcode Endereo A

Memria
Ponteiro para operando

Operando

Exerccio

Desenhe como fica o endereamento em cascata definido como:

EA = (((A)))

Endereamento de Registrador

Operando armazenado no registrador especificado no campo de endereo da instruo EA = R Nmero limitado de registradores Pequeno nmero de bits na instruo para enderear os registradores Instrues curtas No requer acesso a memria Execuo rpida da instruo Mltiplos registradores aumentam o desempenho Necessita um bom programador assembly Em C:

register int B; // fora a varivel B a ser alocada a registradores

Semelhante ao endereamento direto

Diagrama de Endereamento de Registrador


Instruo Opcode Endereo do Registrador R Registradores

Operando

Endereamento Indireto via registrador

Semelhante ao endereamento indireto, mas agora o contedo est na posio de memria indicada no registrador EA = (R) Amplo espao de endereamento (2n) Um acesso memria a menos que no endereamento indireto

Diagrama do Endereamento via Registrador

Instruo Opcode Endereo do Registrador R Memria

Registradores

Ponteiro para Operando

Operando

Endereamento por deslocamento


EA = A + (R) Endereo armazenado em 2 valores


A = valor base R = registrador que armazena o deslocamento Ou vice-versa

Adiciona o contedo do registrador ao valor fornecido para produzir o endereo efetivo

O registrador pode ser implicito

Diagrama do Endereamento por deslocamento

Instruo Opcode Registrador R Endereo A Memria

Registradores

Ponteiro para Operando

Operando

Endereamento relativo

Uma verso de endereamento por deslocamento Registrador implcito PC R = Program counter, PC EA = A + (PC) Busca um operando a A palavras da posio atual apontada pelo registrador PC get operand from A cells from current location pointed to by PC Explora o princpio da localidade de referncia e o uso de caches

Endereamento via Registrador- Base


Uma verso de endereamento por deslocamento A indica o deslocamento R armazena um ponteiro para o endereo base R pode ser implcito ou explcito Exemplo

Registradores de segmento no 80X86

Endereamento por Indexao


Uma verso de endereamento por deslocamento A = base R = deslocamento EA = A + R Bom para operaes iterativas e acessar arrays

EA = A + R R++

Pode incluir o incremento/decremento automtico do valor do registrador

Combinaes

Postindex

EA = (A) + (R)

Preindex

EA = (A+(R))

Exerccio 2: Desenhe os diagramas das combinaes de endereamento descritas acima.

Endereamento a Pilha

Operando est implicitamente no topo da pilha Exemplo

ADD

Pop 2 itens do topo da pilha e soma. Armazena o resultado no topo da pilha (PUSH)

Formato de instrues

Leiaute dos bits em uma instruo Inclui o OPCODE Inclui os OPERANDOS (implcitos ou explictos) Pode indicar o MODO de ENDEREAMENTO Usualmente existem mais de um formato de instruo em um conjunto de instrues

Tamanho das instrues

Afeta e Afetado por:

Tamanho da Memria Organizao da Memria Estrutura de Barramento Complexidade da CPU Velocidade da CPU

Relao entre o poder do conjunto de instrues e economizar espao

Alocao de Bits

Nmero de modos de endereamento Nmero de operandos Registradores versus Memria Nmero de conjuntos de registradores Faixa de Endereos Granularidade do Endereamento Cdigos de operao de tamanho varivel: tamanho mnimo extendvel com bits adicionais na instruo

Formato de instrues do PDP-8


Instrues de 12 bits Palavras de 12 bits 1 registrador Acumulador 7 bits de endereamento de memria

Memria dividia em pginas de 27 = 128 palavras 2 bits para modificadores


1 para indicar se parte da pgina ZERO ou da pgina atual 1 para endereamento direto / indireto

Formato de instrues do PDP-8

Formato de instruo do PDP-10

Insere os princpios:

Ortogonalidade: 2 variveis so ortogonais se elas so independentes uma da outra


Os demais elementos de uma instruo devem ser independentes do cdigo da operao Um endereo sempre calculado do mesmo modo, independente do cdigo da operao

Completeza: conjunto completo e idntico de operaes para todos os tipos de dados

Endereamento direto: palavra e instruo de 36 bits, formato fixo

Formato de instrues do PDP-11

8 registradores de 16 bits

1 para o topo da pilha 1 para contador de programa

13 formatos diferentes de instrues Tamanho das instrues: 16, 32 ou 48 bits

Formato de instrues do PDP-11

Formato de instrues do VAX

Tipicamente arquiteturas suportam operaes com 2 operandos, mas algumas podem utilizar mais operandos OPCODE de 1 ou 2 bytes ZERO a 6 campos para operandos Instrues com 1 37 bytes 12 modos de endereamento

Exemplos de instrues do VAX

Exerccios
1.

Dados os seguintes valores, armazenados na memria de uma mquina com instrues de um nico endereo e com um acumulador, que valores so carregados no acumulador pelas instrues:

A palavra 20 contm o valor 40 A palavra 30 contm o valor 50 A palavra 40 contm o valor 60 A palavra 50 contm o valor 70

A) Carrega imediato 20 B) Carrega direto 20 C) Carrega indireto 20 D) Carrega imediato 30 E) Carrega direto 30 F) Carrega indireto 30

1.

2.

3.

4. 5.

6.

7.

Diferencie os modos de endereamento imediato, direto, indireto, de registrador, indireto via registrador? Qual a diferena entre o endereamento por deslocamento e o endereamento via registradorbase? Como funciona a indexao e para o que especialmente utilizada? O que o formato de instrues deve incluir? Quais os fatores que influenciam o tamanho das instrues? Como feito o suporte a operaes com tamanho varivel? Explique os conceitos de ortogonalidade, completeza e endereamento direto introduzidos no PDP-10.

36- Dados os seguintes valores, armazenados na memria de uma mquina com instrues de um nico endereo, com um acumulador e com um registrador para endereamento, que valores so carregados no acumulador pelas seguintes instrues?
A palavra 13 contm o valor 21 A palavra 18 contm o valor 13 A palavra 20 contm o valor 30 A palavra 21 contm o valor 40 A palavra 40 contm o valor 50 A palavra 50 contm o valor 60 A palavra 60 contm o valor 10 A palavra 70 contm o valor 20 O registrador para endereamento contem o valor 20. a. Carrega imediato 18 b. Carrega indireto 18 c. Carrega direto 18 d. Carrega registrador e. Carrega indireto via registrador f. Carrega por deslocamento 40 g. Carrega via registrador-base h. Carrega imediato 70 i. Carrega indireto 50 j. Carrega imediato 50 k. Carrega direto 50