Vous êtes sur la page 1sur 33

Nvel de Arquitetura do Conjunto

de Instrues
Aula 2
Prof. Antoniel Rego

Nvel ISA
Aula de Hoje
Conjunto de Instrues;
Exemplo: Tipos de Arquiteturas (3, 2, 1 e 0 endereos);
Modos de Endereamento;
Conjunto de Instrues
A = ( ( B + C ) x D - E ) / F
So consideradas as seguintes operaes
aritmticas:
ADD para soma;
SUB para subtrao;
MUL para multiplicao;
DIV para diviso.
Arquitetura de 4 Endereos
A = ( ( B + C ) x D - E ) / F
OP End1 End2 End3 End4
ENDEREO INSTRUO COMENTRIO
E1 ADD B C A E1 Soma B com C, guarda o resultado em A
E2 MUL A D A E3 Multiplica A por D, guarda o resultado em A
E3 SUB A E A E4 Subtrai E de A, guarda o resultado em A
E4 DIV A F A E5 Divide A por F, guarda o resultado em A
E5 HALT Fim do programa
Arquitetura de 3 Endereos
A = ( ( B + C ) x D - E ) / F
Necessidade de um registrador especfico para indicar o endereo da
prxima instruo:
Contador de Programa (CP) ou Contador de Instruo
OP End1 End2 End3

ENDEREO INSTRUO COMENTRIO
E1 ADD B C A Soma B com C, guarda o resultado em A,
incrementa CP
E2 MUL A D A Multiplica A por D, guarda o resultado em A,
incrementa CP
E3 SUB A E A Subtrai E de A, guarda o resultado em A,
incrementa CP
E4 DIV A F A Divide A por F, guarda o resultado em A,
incrementa CP
E5 HALT Fim do programa
Arquitetura de 2 Endereos
A = ( ( B + C ) x D - E ) / F
Mais economia de memria:
Um dos operandos fonte o mesmo operando destino
OP End1 End2
ENDEREO INSTRUO COMENTRIO
E1 MOV A B Move B para A
E2 ADD A C Soma A com C, guarda o resultado em A, incrementa CP
E3 MUL A D Multiplica A por D, guarda o resultado em A, incrementa
CP
E4 SUB A E Subtrai E de A, guarda o resultado em A, incrementa CP
E5 DIV A F Divide A por F, guarda o resultado em A, incrementa CP
E6 HALT Fim do programa
Arquitetura de 1 Endereo
Criao de Registrador Especial: Acumulador;
OP End1: End1 indica o endereo de um dos operandos fontes e o acumulador
assume papel de um dos operandos fontes e do operando destino;
Novas instrues: LDA Load Acumulator e STA Store Acumulator
A = ( ( B + C ) x D - E ) / F
OP End1

ENDEREO INSTRUO COMENTRIO
E1 LDA B Move B para Acumulador
E2 ADD C Soma Acumulador com C, resultado no Acumulador
E3 MUL D Multiplica Acumulador por D, resultado no Acumulador
E4 SUB E Subtrai E do Acumulador, resultado no Acumulador
E5 DIV F Divide Acumulador por F, resultado no Acumulador
E6 STA A Armazena o Acumulador no Endereo A
E7 HALT Fim do programa
Arquitetura de 0 Endereos
No existe nenhuma referncia explcita endereos
de memria onde estejam localizados os operandos;
A soluo neste caso usar uma pilha: os operandos
so sempre retirados do topo da pilha;
Duas instrues manipulam a pilha: PUSH e POP:
PUSH: insere no topo da pilha;
POP: retira do topo da pilha.
Arquitetura de 0 Endereos
A = ( ( B + C ) x D - E ) / F

ENDEREO INSTRUO COMENTRIO
E1 PUSH F Coloca F no topo da pilha
E2 PUSH E Coloca E no topo da pilha
E3 PUSH D Coloca D no topo da pilha
E4 PUSH C Coloca C no topo da pilha
E5 PUSH B Coloca B no topo da pilha
E6 ADD Topo da pilha recebe B+C (B e C so
retirados da pilha)
E7 MUL Topo recebe (B+C)*D
E8 SUB Topo recebe (B+C)*D-E
E9 DIV Topo recebe ((B+C)*D-E)/F
E10 POP A Topo da pilha armazenado em A
E11 HALT Fim do Programa
Endereamento Imediato
O operando vem como parte da instruo;
Ex: ADD 5;
Adiciona 5 ao contedo do Acumulador;
5 um operando que vem no campo de endereo
da instruo;
Nenhum acesso memria necessrio;
Rpido;
Intervalo de definio dos operandos limitado;
Muito utilizado na definio de constantes.

Endereamento imediato
Endereamento direto
O campo de endereo contm o endereo do operando
Ex. ADD A
Procura na posio A da memria pelo operando;
Adiciona o contedo da posio A na memria ao
acumulador;
Um nico acesso a memria na busca do operando;
A instruo sempre acessar a mesma localizao de
memria, utilizado em variveis globais;
No h necessidade de clculos adicionais para
encontrar o endereo efetivo;
Espao de endereamento limitado pelo campo.
Endereamento direto
Endereamento indireto
O Campo de endereo aponta para uma posio
de memria que contm o endereo do
operando;
Endereo Efetivo EE = Contedo da posio (A)
Ex. ADD (A)
Busca em A, encontra o endereo do operando
(A) e busca em (A) pelo operando;
Adiciona o contedo do endereo efetivo ao
acumulado;
Endereamento Indireto
Endereamento por Registrador
No h acesso a memria;
Execuo muito rpida;
Espao de endereamento muito limitado;
Mais registradores contribui com o
desempenho;
Muito utilizado em variveis locais, ex: ndices
de um lao.

Endereamento por Registrador
Endereamento Indireto por
Registrador
Endereamento Indireto;
EE = (R);
O operando est na posio de memria
apontada pelo do registrador indicado no
campo de endereamento;
Espao de endereamento (2^n);
Um acesso a memria.
Endereamento Indireto por
Registrador
Endereamento por Deslocamento
O operando se encontra na memria em uma
posio deslocada com relao ao endereo
fornecido no campo de endereo
EE = A + (R)
O campo de endereo pode ter dois valores:
A = Guarda o endereo de base
R = Guarda o contedo do deslocamento
ou o contrrio
O registrador pode ser um registrador default
(economia de bits na instruo)
Endereamento por Deslocamento
Endereamento por Deslocamento
Endereamento de Pilha
Notao infixa:
X + Y
Notao ps-fixa ou notao polonesa
invertida:
X Y +

Endereamento de Pilha
Vantagens da notao polonesa invertida:
Qualquer frmula pode ser expressa sem
parnteses;
conveniente para avaliar frmulas em
computadores com pilhas;
Operadores infixos tm precedncia, o que
arbitrrio e indesejvel:
Ex: A x B + C significa (A x B) + C, e no A x (B + C), pois a
multiplicao tem precedncia sobre a adio.
Endereamento Pilha
Endereamento de Pilha
Algoritmo de transformao da forma infixa para
notao polonesa invertida:
1. O vago que est no desvio vai para Marab;
2. O vago mais recente na linha para Marab faz o retorno
e vai para So Lus;
3. O vago que est no desvio e o vago mais recente na
linha do Rio so desviados e desaparecem (isto , so
apagados);
4. Pare. Os smbolos agora em So Lus representam a
frmula em notao polonesa invertida quando lida da
esquerda para a direita;
5. Pare. Houve um erro. A frmula original no foi
equilibrada adequadamente.

Endereamento de Pilha
Tabela utilizada pelo Algoritmo
+ - x / ( )
4 1 1 1 1 1 5
+ 2 2 2 1 1 1 2
- 2 2 2 1 1 1 2
x 2 2 2 2 2 1 2
/ 2 2 2 2 2 1 2
( 5 1 1 1 1 1 3
Endereamento de Pilha
NOTAO INFIXA NOTAO POLONESA INVERTIDA
A + B x C A B C x +
A x B + C A B x C +
A x B + C x D A B x C D x +
(A + B) / (C - D) A B + C D - /
A x B / C A B x C /
Avaliao de frmulas em notao
polonesa
Algoritmo:
Examine a cadeia da notao da esquerda para a
direita;
Quando encontrar um operando, passe-o para a
pilha;
Quando encontrar um operador, execute a
instruo correspondente;
Avaliao de frmulas em notao
polonesa
Ex:
(8 + 2 x 5) / (1 + 3 x 2 4)
A frmula correspondente em notao polonesa
invertida :
8 2 5 x + 1 3 2 x + 4 /
O nmero no topo da pilha o operando da
direita;

Utilizao de uma pilha para avaliar uma
frmula em notao polonesa invertida
PASSO CADEIA RESTANTE INSTRUO PILHA
1 8 2 5 x + 1 3 2 x + 4 - / PUSH 8 8
2 2 5 x + 1 3 2 x + 4 - / PUSH 2 8, 2
3 5 x + 1 3 2 x + 4 - / PUSH 5 8, 2, 5
4 x + 1 3 2 x + 4 - / MUL 8, 10
5 + 1 3 2 x + 4 - / ADD 18
6 1 3 2 x + 4 - / PUSH 1 18, 1
7 3 2 x + 4 - / PUSH 3 18, 1, 3
8 2 x + 4 - / PUSH 2 18, 1, 3, 2
9 x + 4 - / MUL 18, 1, 6
10 + 4 - / ADD 18, 7
11 4 - / PUSH 4 18, 7, 4
12 - / SUB 18, 3
13 / DIV 6
Trabalho
Desenvolver um programa que receba como
entrada uma frmula na notao infixa e
converta para a notao polonesa invertida;
Ex:
entrada: A + B;
Sada: A B +;
Alm disso, o programa deve realizar a avaliao
de frmulas, executando instruo por instruo,
atravs da utilizao de uma pilha.

Referncias
http://www.inf.ufrgs.br/~dsmmatos/aula_4.p
df
Organizao Estruturada de Computadores, 6
Edio, Tanenbaum

Vous aimerez peut-être aussi