Escolar Documentos
Profissional Documentos
Cultura Documentos
ESTUDO DA CPU
Cdigo de Operao
(a) Instruo sem endereo
1
Relaes possveis entre o comprimento de uma instruo e
o comprimento de uma palavra da mquina:
Todas as instrues possuem o mesmo comprimento.
As instrues podem assumir dois ou trs comprimentos
diferentes.
As instrues podem ser mais curtas, ter o mesmo
tamanho ou ser mais compridas do que a palavra da
mquina.
Exemplos:
1 palavra 1 palavra
End. End.
0 Instruo 0 Instruo Instruo Instruo Instruo
1 Instruo 1 Instruo Instruo Instruo Instruo
2 Instruo 2 Instruo Instruo Instruo Instruo
3 Instruo 3 Instruo Instruo Instruo Instruo
(a) (b)
1 palavra 1 palavra
End. End.
0 Instruo 0 Instruo Instruo Instruo Instruo
1 Instruo 1 Instruo Instruo
2 2 Instruo Instruo Instruo
3 Instruo 3 Instruo Instruo Instruo
4 Instruo 4 Instruo Instruo Instruo
5 5 Instruo Instruo
6 6 Instruo
7 Instruo 7 Instruo Instruo
(c) (d)
2
Critrios de Projeto para Formatos de Instrues
4
Expandindo os Cdigos de Operao
5
Expanso do cdigo de operao:
Exemplo:
Mquina com instrues de 16 bits e endereos de 4
bits.
Permite 16 cdigos de operao (4 bits) com 3 endereos
de 4 bits
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Alternativa possvel:
15 instrues de 3 endereos.
cdigos de operao de 4 bits
14 instrues de 2 endereos.
cdigos de operao de 8 bits
31 instrues de 1 endereo.
cdigos de operao de 12 bits
16 instrues sem endereo.
cdigos de operao de 16 bits
6
Cdigo de operao expandido:
16 bits
Cdigo de 0000 xxxx yyyy zzzz 15 instrues de
Operao de 0001 xxxx yyyy zzzz 3 endereos
4 bits 0010 xxxx yyyy zzzz
. . . .
. . . .
1100 xxxx yyyy zzzz
1101 xxxx yyyy zzzz
1110 xxxx yyyy zzzz
7
Exemplos de Formato de Instruo
PDP-11
Instruo possui um cdigo de operao de 4 bits e dois
campos de endereamento de 6 bits (total de 16 bits).
Cdigo de Operao:
Primeiro bit indica se a instruo opera sobre um byte ou
sobre uma palavra.
Operando:
3 bits para modo
Operando registrador,
Operando est na memria,
Operando uma constante, ...
3 bits para registrador (8 registradores)
Os modos so os mesmos para os operandos fonte e destino.
Bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
8
As instrues que endeream memria possuem 1 ou 2
palavras adicionais de 16 bits para especificar os endereos.
A Famlia Intel 8088/80286/80386
9
CPU Comprimento de campos (em bytes)
8088 0-3 1 0-1 0 0-2 0-2
80286 0-3 1 0-1 0 0-2 0-2
80386 0-5 1-2 0-1 0-1 0-4 0-4
Bits 6 1 1 2 3 3
INSTRUO Fonte B/P ESCALA NDICE BASE
2 3 3
MOD REG R/M
10
Algumas instrues possuem mais 1, 2 ou 4 bytes adicionais
para especificar um endereo de memria.
11
A Famlia Motorola 68000/68020/68030
12
Formatos de instruo utilizados no 68000 (primeira
palavra):
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
TAM
14 CDIGO DE OPERAO OPERANDO MOVEM
13
A diferenciao entre os formatos de instruo no se d
sempre pelos bits 12 a 15 para os formatos de 2 a 12:
14
3.2. Endereamento
16
Endereamento Imediato
17
Famlia Intel:
Famlia Motorola:
18
Endereamento Direto
Exemplo:
Carga do registrador R1 com o contedo da posio de
memria de endereo 1000.
Endereo
1000 1510
1510 4
R1 1510
19
Intel:
Motorola:
20
Endereamento de Registrador
Fica mais claro quando o bit que diferencia estes dois tipos
de endereamento se encontra no campo de endereamento
e no no cdigo de operao.
21
Disponvel em quantidade nas CPUs Intel e Motorola.
22
Endereamento Indireto
Exemplo:
Carga do registrador R1 de forma indireta a partir da
posio de memria de endereo 1000.
Endereo
1000 1510
1510 4
R1 4
23
Intel:
8088/80286:
Registradores utilizados para endereamento indireto:
BX, SI e DI.
80386:
Todos os registradores podem ser utilizados.
Motorola:
68000:
Permite somente o endereamento indireto via
registrador.
68020 e 68030:
Permitem tambm o endereamento indireto via memria.
24
Endereamento Indexado
Exemplo:
Bloco de n palavras ocupando as posies:
A, A+1, A+2,..., A+n-1
que devem ser copiadas para as posies:
B, B+1, B+2,..., B+n-1
Uma soluo possvel: se a mquina possuir uma
instruo
MOVE A, B
que copia o contedo da posio A para a posio B e
modifica a prpria instruo para:
MOVE A+1, B+1
e a executa novamente, e assim sucessivamente, at
completar as n interaes.
Problema: os programas ficam difceis de se depurar
(programa altera a si prprio).
Outra soluo: utilizar o endereamento indireto. A cada
movimentao so alterados os apontadores, que so dados.
26
Endereamento de Pilha
27
Exemplo de funcionamento da pilha:
Apontador da pilha
28
Instrues sem endereo utilizam como operandos dados
existentes na pilha.
Exemplo:
Uma instruo de adio obtm os dois operandos
retirando-os consecutivamente do topo da pilha e
armazena o resultado na pilha. Os operandos so
retirados da pilha aps o uso.
Apontador da pilha
Endereo
1000 4 4 4
1001 20 20 50
1002 6 30
1003 5
1004 Topo da
Pilha
(a) (b) (c)
29
Exemplos de Endereamento
30
Endereamento no PDP-11
Palavra de 16 bits
31
Descrio dos modos de endereamento do PDP-11, onde R
o registrador especificado em Fonte ou Destino.
Palavra de 16 bits
(*) Considerando as instrues que manipulam palavras, com o primeiro bit igual a 1.
Nomenclatura:
R - registrador;
$ - operando imediato;
* - indica indireo.
Um nico cdigo de operao produz um grande nmero
de instrues diferentes, j que os modos de
endereamento fonte e destinos so especificados
independentemente.
33
Modo
Fonte (M) R=0-5 R=6 R=7
0 Move R para R4. Move o apontador de pilha para R4. Move o contador de programa para R4.
Ex: MOV R3, R4 Ex: MOV SP, R4 Ex: MOV PC, R4
1 Move a palavra de memria apontada por Move o topo da pilha para R4, mas noMove K para R4; o contador de programa no
R para R4. o remove da pilha. incrementado, assim K ser executado como
a prxima instruo.
Ex: MOV *R3, R4 Ex: MOV *SP, R4 Ex: MOV *PC. R4
2 Move a palavra de memria apontada por Remove uma palavra da pilha e a coloca Move K para R4 (endereamento imediato).
R para R4 e soma 2 a R. em R4 (instruo de desempilhamento).
35
Endereamento na Famlia Intel: 8088/80286/80386
Os modos no so ortogonais.
36
Somente algumas combinaes de somas de registradores
so permitidas para formar apontadores.
No permitida a auto-indexao.
80386:
Possui um novo esquema de endereamento para os
segmentos de 32 bits, que permite o endereamento
indireto atravs de mais registradores.
MODO
00 01 10 11
000 M[EAX] M[EAX + DISP8] M[EAX + DISP32] EAX ou AL
001 M[ECX] M[ECX + DISP8] M[ECX + DISP32] ECX ou CL
010 M[EDX] M[EDX + DISP8] M[EDX + DISP32] EDX ou DL
R/M 011 M[EBX] M[EBX + DISP8] M[EBX + DISP32] EBX ou BL
100 SIB (*) SIB com DISP8 SIB com DISP32 ESP ou AH
101 Endereamento Direto M[EBP + DISP8] M[EBP + DISP32] EBP ou CH
110 M[ESI] M[ESI + DISP8] M[ESI + DISP32] ESI ou DH
111 M[EDI] M[EDI + DISP8] M[EDI + DISP32] EDI ou BH
EBP
Outras
Estrutura variveis i em EAX
de Pilha locais
a[0] EBP + 8 M[4 * EAX + EBP + 8]
a[1] EBP + 12
a[2] EBP + 16
38
Endereamento na Famlia Motorola: 68000/68020/68030
39
Exemplo de instruo do 680x0:
a) Instruo de um operando no 680x0.
b) Palavra de extenso no 68000.
c) Formato curto da palavra de extenso no 68020 e 68030.
d) Formato completo de palavras de extenso no 68020 e
68030.
Bits 10 3 3
Legenda:
D/A - 0 seleciona um registrador D; 1 seleciona um registrador A.
REG - seleciona um registrador (0-7) ou um ndice.
W/L - 0 indica palavra; 1 indica palavra longa.
ESCALA - 0-3 indica fatores de escala 1, 2, 4 ou 8.
BS - suprime registrador de base.
IS - suprime registrador de ndice.
TAMANHO DE DB - Tamanho do deslocamento em relao a base
(0, 1 ou 2 palavras).
I/IS - Seleciona entre indexado ou indireto.
40
Discusso Acerca dos Modos de Endereamento
41
PDP-11:
Motorola 68000:
42
Intel 8088 e 80286:
DEC VAX:
43
3.3. Tipos de Instruo
Exemplos:
Motorola (680x0):
MOVE: instruo de propsito geral, que permite a
transferncia entre registradores, memria ou pilha.
Intel (8088/80x86):
MOV, etc: instrues bem mais limitadas. Existem
muitas delas, que tornam possvel a transferncia
entre dois lugares quaisquer.
44
Operaes Didicas
Instrues Aritmticas:
Adio, subtrao, multiplicao e diviso.
Instrues Lgicas:
AND, OR, XOR.
AND: calcula o produto booleano bit a bit de dois
argumentos de uma palavra cada, gerando como
resultado tambm uma palavra.
Uso importante: extrao de bits de uma palavra,
atravs de uma mscara. A operao AND tende a
remover os bits iguais a 1.
Exemplo: extrao do segundo caractere de uma
palavra de 4 bytes para ser imprimido.
Soluo: isol-lo dos demais bytes e justific-lo direita.
Extrao:
46
Exemplo: inverter os 8 bits do segundo caractere de
uma palavra de 4 bytes, sem alterar os demais bits.
Inverso de bits:
47
Operaes Mondicas
48
Rotaes: so operaes nas quais os bits do operando so
movidos para a esquerda ou direita, sendo que os bits que
saem da palavra reaparecem do outro lado, formando o
resultado.
Exemplo: rotao de 2 bits de uma palavra para a direita.
49
Exemplo: deslocamento de 2 bits de uma palavra para a
direita, sem a extenso do sinal e com a extenso do sinal.
50
Comparaes e Desvios Condicionais
51
Exemplo: teste do bit de sinal de um resultado.
Se o bit de sinal 1 (nmero negativo), o programa
continua a partir do endereo Rtulo. Se o bit de
sinal 0, o programa continua a partir da instruo
seguinte a instruo de salto.
52
Comparao entre duas palavras: permite avaliar se elas
so iguais ou qual a maior.
Instruo que a princpio precisa de trs endereos: dois
para os operandos e um para o endereo de desvio.
Se a mquina no permite instrues de trs endereos,
uma soluo disponibilizar dois tipos de instrues:
Instruo de comparao, que armazena alguns bits
de condio a respeito do resultado.
Instruo de desvio condicional, que consulta os bits
de condio e eventualmente faz o desvio.
Este tipo de soluo adotada pelas famlias
Motorola e Intel.
O resultado de uma comparao depende dos sinais dos
operandos. Em geral, faz-se a comparao entre dois
valores de mesmo sinal, ou precisa-se ter instrues
especficas para nmeros sem sinal e nmeros com sinal.
54
Controle de Loop
i:=1; i:=1;
1: {primeiro comando} 1: if i > n then goto 2;
{segundo comando} {primeiro comando}
. {segundo comando}
. .
{ltimo comando} .
i := i + 1; {ltimo comando}
if i <= n then goto 1; i := i + 1;
2: {primeiro comando aps o loop} goto 1;
2: {primeiro comando aps o loop}
(a) teste no final (b) teste no incio
Cdigo equivalente em Pascal
for i := 1 to n do begin ... end
55
Algumas mquinas podem disponibilizar instrues
especiais que fazem o controle de contagem de interaes,
teste de condio e desvio numa nica instruo.
Intel:
8088/80286: Instruo LOOP, que decrementa o
registrador CX de 1 e salta para um dado rtulo se
o resultado no for 0. Se for 0, a execuo continua a
partir da prxima instruo.
80386: Idem para o registrador ECX.
Motorola:
Instruo para uma soluo mais geral:
Primeiro testa uma determinada condio, que se no
satisfeita, encerra o loop.
Decrementa um registrador D, que se resultar num valor
maior ou igual a 0, repete o loop; caso contrrio, encerra
o loop.
56
Entrada e Sada
57
3.4. Fluxo de Controle
58
Fluxo de Controle Seqencial e Desvios
C C
O O
N N
T T
A A
D D Desvios
O O
R R
D D
O O
P P
R R
O O
G G
R R
A A
M M
Tempo Tempo
A A
(a) Sem desvios (b) Com desvios
59
Procedimentos
60
Chamada de um procedimento B a partir de um
procedimento A:
(A) (B)
Procedimento Procedimento
que chama chamado
A chamado
pelo
programa
principal
A retorna
ao programa
principal
61
Co-rotinas
(A) (B)
A chamado
pelo
programa
principal
A retorna
ao programa
principal
62
Armadilhas (Traps)
Exemplos de Traps:
Overflow e Underflow em ponto-flutuante.
Overflow em inteiro.
Violao de proteo.
Cdigo de operao indefinido.
Estouro da pilha.
Diviso por zero.
63
Interrupes
64
Problemas: o programa interrompido deve voltar a ser
executado no mesmo estado em que estava antes de ocorrer
a interrupo.
INT
Controlador
INTA
do
Dispositivo CPU
DADOS
de
E/S Vetor de
Interrupo
66
Memria
0000h Endereo do vetor 0
Tabela 0002h Endereo do vetor 1
de 0004h Endereo do vetor 2
Vetores 0006h Endereo do vetor 3
de 0008h Endereo do vetor 4
000Ah Endereo do vetor 5
Interrupo
000Ch Endereo do vetor 6
000Eh Endereo do vetor 7
Tarefas do Software:
1. A sub-rotina de tratamento da interrupo salva o
contedo dos registradores da CPU que ir utilizar, por
exemplo, na pilha.
2. A sub-rotina realiza a sua tarefa propriamente dita: a
operao de E/S (por exemplo, l o cdigo da tecla
pressionada e o armazena num buffer).
3. A sub-rotina restaura o contedo dos registradores
salvos.
4. A sub-rotina executa uma instruo de retorno da
interrupo, permitindo a CPU recuperar o seu status
mnimo (PSW).
5. O programa interrompido prossegue ento como se a
interrupo no tivesse ocorrido.
Conceito relativos a interrupo:
Transparncia: uma sub-rotina de interrupo dita
transparente quando aps o retorno da sub-rotina o
programa interrompido volta para o estado exato em que
estava anteriormente a chegada da interrupo.
Mascaramento: mecanismo que permite desabilitar uma
interrupo ou um conjunto de interrupes.
67
Simultaneidade de Interrupes: se duas interrupes
ocorrem ao mesmo instante, a de maior prioridade ser
atendida.
68
Uma interrupo pode ocorrer enquanto outra est sendo
tratada pela sua sub-rotina de tratamento. Solues
possveis:
Inibio: todas as sub-rotinas de tratamento de
interrupo inibem interrupes subseqentes antes
de tomar qualquer outra atitude.
Problema: pode-se perder outras interrupes.
Prioridade: cada interrupo tem uma prioridade
diferente, definida na PSW, por exemplo. Eventos
mais prioritrios so atribudos a interrupes de
maior prioridade. Quando uma interrupo de
prioridade n estiver sendo tratada, somente eventos
mais prioritrios podem interromp-la; eventos
menos prioritrios devem aguardar.
69
Exemplo: Supor um sistema com uma impressora, um disco
e uma interface RS232, com prioridades 2, 4 e 5
respectivamente.
Interrupo
RSI do disco
da RS232.
Interrupo Prioridade 5. termina.
da
impressora. RSI da
Prioridade impressora
2. termina.
0 10 15 20 25 35 40
Tempo
Programa RSI da RSI RSI RSI da Program
do impres- da do impres- a do
usurio sora RS232 disco sora usurio
Usurio Usurio Usurio Usurio Pilha
Impressora Impressora Impressora
70
Intel
Motorola:
71