Beruflich Dokumente
Kultur Dokumente
Sistemas de Computao I
Centro de Cincias Computacionais C3 - FURG
Software
Operating System
Firmware
I/O System
Hardware
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
A coleo completa de instrues que so entendidas por uma CPU Cdigo de Mquina Binrio Usualmente representada pelos cdigos assembly
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
Faa isso Para esse Coloque a resposta aqui Quando tiver feito isso, ento faa isso
Modo de endereamento
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
Codificao de Instrues
Cdigo de Mquina
Alternativa: programao em linguagem simblica As instrues em linguagem simblica so representadas por MNEMNICOS (abreviatura da funo)
Exemplo de MNEMNICOS
Adio : ADD (addition) Subtrao: SUB (subtration) Multiplicao: MUL (multiply) Deslocamento: SMR (Shift Right), SML (Shift Left)
Rn : registrador n
Rtulos (labels): ponteiro de memria ou E/S
Dispositivos de E/S
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.
2 endereos
Um endereo para operando fonte e resultado a=a+b Reduz o tamanho da instruo Necessita algum trabalho extra
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
1 endereo
Segundo endereo implcito Usualmente um registrador (Acumulador - AC) Comum nas primerias mquinas
STOR Y
Y <- AC
0 (zero) endereos
c=a+b
PILHAS (1)
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
Gerncia da 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) +
Pilha
Pilha
Pilha
Pilha
Pilha
A
PUSH A
A
PUSH B
A+B
+
A+B
PUSH C
(A+B) x C
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
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
Poucos endereos
Instrues menos complexas (poderosas?) Mais instrues por programa Rpida busca/execuo de instrues
Avaliao de Expresses
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.
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
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
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.