Você está na página 1de 38

Aula 12 Conjunto de Instrues

Sistemas de Computao I
Centro de Cincias Computacionais C3 - FURG

Arquitetura de Computadores e Organizao de Computadores


Applications

Software

Operating System

Compiler Instruction Set Architecture Instruction Set Processor

Firmware

I/O System

Hardware

Datapath & Control Digital Design Circuit Design Layout

Arquitetura de Computadores

Arquitetura de Computadores
Atributos do sistema visiveis para o programador, ou seja, os atributos que tem impacto direto sobre a execuo lgica de um programa

Conjunto de instrues # de bits usados para representar os tipos de dados Mecanismos de entrada e sada Tcnicas de endereamento memria

Conjunto de Instrues
Caractersticas e Funes

O que um Conjunto de Instrues? (Instruction Set Architecture ISA)

A coleo completa de instrues que so entendidas por uma CPU Cdigo de Mquina Binrio Usualmente representada pelos cdigos assembly

Programao em Linguagem de Mquina


Conjunto de registradores Estrutura da memria Tipode dados disponveis Funcionamento da ULA

Diagrama de transio de estados de um Ciclo de Instrues


Armazenamento de Resultado

Busca de Instruo

Busca de Operando

Mltiplos Operandos
Cculo de endereo de Instruo Clculo de Endereo de Operando

Mltiplos Resultados
Clculo do Endereo de Operando

Decodificao de Instruo

Execuo da Operao

Instruo Completada, Busca da prxima instruo

Retorno de cadeias de caracteres ou vetor

Elementos de uma Instruo


Cdigo da Operao - Operation code (Op code)

Faa isso Para esse Coloque a resposta aqui Quando tiver feito isso, ento faa isso

Referncia a operando fonte

Referncia a operando de Resultado (destino)

Referncia a Prxima Instruo

Modo de endereamento

Referncia a prxima instruo

Pode estar localizada na Memria Principal ou, no caso de um sistema de Memria Virtual, tanto na Memria Principal quanto na Memria Secundria. Na maioria dos casos, a que segue imediatamente a instruo corrente. Quando necessrio, a instruo deve fornecer um endereo de Memria Principal ou Memria Virtual.

Exemplo de Instruo

2 bits

2 bits

4 bits

4 bits

OPCODE Modo Operando De Fonte Endereamento

Operando Destino / Fonte

Codificao de Instrues

Cdigo de Mquina

Conjunto de bits representando os elementos da instruo Cdigo nmerico de difcil compreenso


Alternativa: programao em linguagem simblica As instrues em linguagem simblica so representadas por MNEMNICOS (abreviatura da funo)

Cada instruo simblica corresponde a uma instruo de mquina

Exemplo de MNEMNICOS

Adio : ADD (addition) Subtrao: SUB (subtration) Multiplicao: MUL (multiply) Deslocamento: SMR (Shift Right), SML (Shift Left)

Onde os operandos ficam armazenados?


Memria Principal (ou memria virtual ou cache) Registradores da CPU

Rn : registrador n
Rtulos (labels): ponteiro de memria ou E/S

Dispositivos de E/S

Formato de Instruo Simples

Tipos de Instrues

Processamento de dados Armazenamento de dados (memria principal) Movimento de dados (E/S) Controle de fluxo de programa

Nmero de Endereos

3 endereos

Operando 1, Operando 2, Resultado a = b + c; Pode existir um quarto prxima instruo (normalmente implcito) No comum Necessita palavras muito longas para armazenar tudo isso.

Rotina para executar Y = (A-B)/ (C+(DxE) )

Instrues com 3 endereos

Instruo SUB Y, A, B MUL T, D, E ADD T, T, C DIV Y, Y, T

Comentrio Y <- A B T <- D x E T <- T + C Y <- Y / T

Nmero de Endereos (b)

2 endereos

Um endereo para operando fonte e resultado a=a+b Reduz o tamanho da instruo Necessita algum trabalho extra

Armazenamento temporrio para armazenar alguns resultados

Rotina para executar Y = (A-B)/ (C+(DxE) )

Instrues com 2 endereos

Instruo MOV Y, A

Comentrio Y <- A

SUB Y, B
MOV T, D MPY T, E ADD T, C DIV Y, T

Y <- Y B
T <- D T <- T x E T <- T + C Y <- Y / T

Nmero de Endereos (c)

1 endereo

Segundo endereo implcito Usualmente um registrador (Acumulador - AC) Comum nas primerias mquinas

Rotina para executar Y = (A-B)/ (C+(DxE) )

Instrues com 1 endereo

Instruo LOAD D MPY E ADD C STOR Y LOAD A SUB B DIV Y

Comentrio AC <- D AC <- AC x E AC <- AC + C Y <- AC AC <- A AC <- AC B AC <- AC / Y

STOR Y

Y <- AC

Nmero de Endereos (d)

0 (zero) endereos

Todos endereos so implicitos Usa uma pilha Exemplo:


push a push b add pop c

c=a+b

PILHAS (1)

LIFO (last in first out)

Acesso restrito ao dado no topo da pilha Instrues: PUSH e POP

Pilha

PUSH Y
Topo

Pilha Y R A B C

POP

Pilha

Topo

R A B C

Topo

R A B C D

Base

Base

Base

Reviso sobre PILHAS (2)

Gerncia da pilha

Endereo base Endereo topo Endereo limite

Manipulados por registradores da arquitetura

Otimizao: os elementos do topo podem ficar armazenados em registradores

Reviso sobre PILHAS (3)

Notao das expresses para operaes com pilha

Notao usual infixada: A+B Com pilha ps-fixada: AB+ (polonesa reversa)
Pilha PUSH Y Topo Pilha Y R A Topo R A POP Pilha

Topo

R A

B
C Base D Base

B
C D Base

B
C D

Exemplo 1: A + (B x C) = ABC x+

Pilha

Pilha

Pilha

Pilha

Pilha

B
A PUSH A A PUSH B

B
A PUSH C

CxB
A X A+(CxB) +

Exemplo 2: (A+B) x C = AB+Cx

Pilha

Pilha

Pilha

Pilha

Pilha

A
PUSH A

A
PUSH B

A+B
+

A+B
PUSH C

(A+B) x C
X

Exemplo 2: (A+B) x C = AB+Cx ou CAB+x

Pilha

Pilha

Pilha

Pilha

Pilha

B A A A+B

C
PUSH C

C
PUSH A

C
PUSH B

C
+

C x (A+B)
X

Rotina para executar Y = (A-B)/ (C+(DxE) )

Instrues ZERO endereos


Instruo PUSH A PUSH B SUB PUSH C PUSH D Comentrio Topo = A Topo = B Topo = A-B Topo = C Topo = D

PUSH E MUL
ADD DIV POP

Topo=E Topo = D x E
Topo = (D x E) + C Topo = (A-B) / (C +(D x E)) Topo = null

Quantos endereos?

Muitos endereos

Instrues mais complexas (poderosas) Mais registradores

Operaes entre registradores so mais rpidas

Poucas instrues por programa

Poucos endereos

Instrues menos complexas (poderosas?) Mais instrues por programa Rpida busca/execuo de instrues

Avaliao de Expresses

Notao pos-fixada (polonesa reversa)

Dispensa uso de parenteses Facilmente avaliada usando uma pilha Lida da esquerda para a direita

Se o elemento for uma varivel ou constante, coloque-o no topo da pilha Se o elemento for um operador, retire os operandos no topo da pilha, efetue a operao e empilhe o resultado.

Converso de expresso na notao infixada para ps-fixada

Algoritmo proposto por Dijkstra (1963)


1. 2. 3. 4.

Examine o prximo elemento na entrada. Se for um operando, copie-o na sada. Se for um abre parnteses, coloque-o no topo da pilha. Se for um operador, ento:
1.

2.

3.

Se o topo da pilha for um abre parnteses, empilhe o operador. Se esse operador tiver maior precedncia que o operador no topo da pilha (a multiplicao e a diviso tem maior precedncia que a adio e a subtrao), ento empilhe o operador. Seno, retire a operao do topo da pilha, copiando-a na sada e repita o passo 4.

5.

6. 7.

Se for um fecha parenteses, retire os operandos do topo da pilha, copiando-os na sada, at que seja encontrado um abre parenteses. Retire o abre parenteses do topo da pilha e descarte-o. Se ainda houver dados na entrada, volte ao passo 1. Se no houver dados na entrada, desempilhe os operandos restantes.

Exemplo

Exerccios

Converta as expresses abaixo da notao infixada para a notao ps fixada


a) F = A x (B+D-E) b) F = A2 + B2 c) F = ((A2 + B2))3 / C

Exerccios
1- Determine as rotinas para as mquinas de 3 endereos, 2 endereos, 1 endereo e ZERO endereos para executarem as funes abaixo. Defina o conjunto de instrues para cada mquina com as operaes de multiplicao, diviso, subtrao, soma, load, store, move. Compare o nmero de instrues necessrias para cada alternativa.
a) F = A x (B+D-E) b) F = A2 + B2 c) F = ((A2 + B2))3 / C

Atividade de Programao

Implemente o algoritmo de Dijkstra Converso de expresso na notao infixada para ps-fixada

Entrada: expresso na notao infixada Sada: Exibir a entrada, sada e pilha como no exemplo do anterior. Implementar utilizando a estrutura de dados pilha.

Exerccios de fixao
1.

2.

3. 4.

O que o conjunto de instrues? O que necessrio ser conhecido da arquitetura para realizar a programao em linguagem de mquina? Quais os elementos de instrues de mquina? Onde os operandos fonte e destino podem estar armazenados?

5.

Quanto referncia ao endereo da prxima instruo: onde ela buscada e qual a regra adotada na maioria das arquiteturas. 6. O que o cdigo de mquina? 7. Qual a alternativa para no necessitarmos programar em linguagem de mquina? 8. O que so MNEMNICOS? Porque so utilizados? 9. Quais os tipos de instrues de mquina? 10. Diferencie as mquinas de 3 endereos, 2 endereos, 1 endereo e pilha.