Professional Documents
Culture Documents
ESTUDO DA CPU
Código de Operação
(a) Instrução sem endereço
1
♦ Relações possíveis entre o comprimento de uma instrução e
o comprimento de uma palavra da máquina:
• Todas as instruções possuem o mesmo comprimento.
• As instruções podem assumir dois ou três comprimentos
diferentes.
• As instruções podem ser mais curtas, ter o mesmo
tamanho ou ser mais compridas do que a palavra da
máquina.
• Exemplos:
1 palavra 1 palavra
End. End.
0 Instrução 0 Instrução Instrução Instrução Instrução
1 Instrução 1 Instrução Instrução Instrução Instrução
2 Instrução 2 Instrução Instrução Instrução Instrução
3 Instrução 3 Instrução Instrução Instrução Instrução
(a) (b)
1 palavra 1 palavra
End. End.
0 Instrução 0 Instrução Instrução Instrução Instrução
1 Instrução 1 Instrução Instrução
2 2 Instrução Instrução Instrução
3 Instrução 3 Instrução Instrução Instrução
4 Instrução 4 Instrução Instrução Instrução
5 5 Instrução Instrução
6 6 Instrução
7 Instrução 7 Instrução Instrução
(c) (d)
2
Critérios de Projeto para Formatos de Instruções
4
Expandindo os Códigos de Operação
5
♦ Expansão do código de operação:
• Exemplo:
∗ Máquina com instruções de 16 bits e endereços de 4
bits.
◊ Permite 16 códigos de operação (4 bits) com 3 endereços
de 4 bits
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
∗ Alternativa possível:
◊ 15 instruções de 3 endereços.
• códigos de operação de 4 bits
◊ 14 instruções de 2 endereços.
• códigos de operação de 8 bits
◊ 31 instruções de 1 endereço.
• códigos de operação de 12 bits
◊ 16 instruções sem endereço.
• códigos de operação de 16 bits
6
∗ Código de operação expandido:
16 bits
Código de 0000 xxxx yyyy zzzz 15 instruções de
Operação de 0001 xxxx yyyy zzzz 3 endereços
4 bits 0010 xxxx yyyy zzzz
. . . .
. . . .
1100 xxxx yyyy zzzz
1101 xxxx yyyy zzzz
1110 xxxx yyyy zzzz
7
Exemplos de Formato de Instrução
PDP-11
♦ Instrução possui um código de operação de 4 bits e dois
campos de endereçamento de 6 bits (total de 16 bits).
♦ Código de Operação:
• Primeiro bit indica se a instrução opera sobre um byte ou
sobre uma palavra.
♦ Operando:
• 3 bits para modo
∗ Operando é registrador,
∗ Operando está na memória,
∗ Operando é uma constante, ...
• 3 bits para registrador (8 registradores)
♦ Os modos são 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 instruções que endereçam memória possuem 1 ou 2
palavras adicionais de 16 bits para especificar os endereços.
A Família 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
INSTRUÇÃO Fonte B/P ESCALA ÍNDICE BASE
2 3 3
MOD REG R/M
10
♦ Algumas instruções possuem mais 1, 2 ou 4 bytes adicionais
para especificar um endereço de memória.
11
A Família Motorola 68000/68020/68030
12
♦ Formatos de instrução utilizados no 68000 (primeira
palavra):
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
TAM
14 CÓDIGO DE OPERAÇÃO OPERANDO MOVEM
13
♦ A diferenciação entre os formatos de instrução não se dá
sempre pelos bits 12 a 15 para os formatos de 2 a 12:
14
3.2. Endereçamento
16
Endereçamento Imediato
17
Família Intel:
Família Motorola:
18
Endereçamento Direto
♦ Exemplo:
• “Carga do registrador R1 com o conteúdo da posição de
memória de endereço 1000”.
Endereço
1000 1510
1510 4
R1 1510
19
Intel:
Motorola:
20
Endereçamento de Registrador
♦ Fica mais claro quando o bit que diferencia estes dois tipos
de endereçamento se encontra no campo de endereçamento
e não no código de operação.
21
♦ Disponível em quantidade nas CPUs Intel e Motorola.
22
Endereçamento Indireto
♦ Exemplo:
• “Carga do registrador R1 de forma indireta a partir da
posição de memória de endereço 1000”.
Endereço
1000 1510
1510 4
R1 4
23
Intel:
♦ 8088/80286:
• Registradores utilizados para endereçamento indireto:
BX, SI e DI.
♦ 80386:
• Todos os registradores podem ser utilizados.
Motorola:
♦ 68000:
• Permite somente o endereçamento indireto via
registrador.
♦ 68020 e 68030:
• Permitem também o endereçamento indireto via memória.
24
Endereçamento Indexado
♦ Exemplo:
• Bloco de n palavras ocupando as posições:
A, A+1, A+2,..., A+n-1
que devem ser copiadas para as posições:
B, B+1, B+2,..., B+n-1
• Uma solução possível: se a máquina possuir uma
instrução
MOVE A, B
que copia o conteúdo da posição A para a posição B e
modifica a própria instrução para:
MOVE A+1, B+1
e a executa novamente, e assim sucessivamente, até
completar as n interações.
Problema: os programas ficam difíceis de se depurar
(programa altera a si próprio).
♦ Outra solução: utilizar o endereçamento indireto. A cada
movimentação são alterados os apontadores, que são dados.
26
Endereçamento de Pilha
27
♦ Exemplo de funcionamento da pilha:
Apontador da pilha
28
♦ Instruções sem endereço utilizam como operandos dados
existentes na pilha.
• Exemplo:
∗ Uma instrução de adição obtém os dois operandos
retirando-os consecutivamente do topo da pilha e
armazena o resultado na pilha. Os operandos são
retirados da pilha após o uso.
Apontador da pilha
Endereço
1000 4 4 4
1001 20 20 50
1002 6 30
1003 5
1004 Topo da
Pilha
(a) (b) (c)
29
Exemplos de Endereçamento
30
Endereçamento no PDP-11
Palavra de 16 bits
31
♦ Descrição dos modos de endereçamento do PDP-11, onde R
é o registrador especificado em Fonte ou Destino.
Palavra de 16 bits
(*) Considerando as instruções que manipulam palavras, com o primeiro bit igual a 1.
• Nomenclatura:
∗ R - registrador;
∗ $ - operando imediato;
∗ * - indica indireção.
• Um único código de operação produz um grande número
de instruções diferentes, já que os modos de
endereçamento fonte e destinos são 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 memória apontada por Move o topo da pilha para R4, mas nãoMove K para R4; o contador de programa não
R para R4. o remove da pilha. é incrementado, assim K será executado como
a próxima instrução.
Ex: MOV *R3, R4 Ex: MOV *SP, R4 Ex: MOV *PC. R4
2 Move a palavra de memória apontada por Remove uma palavra da pilha e a coloca Move K para R4 (endereçamento imediato).
R para R4 e soma 2 a R. em R4 (instrução de desempilhamento).
35
Endereçamento na Família Intel: 8088/80286/80386
36
♦ Somente algumas combinações de somas de registradores
são permitidas para formar apontadores.
♦ 80386:
• Possui um novo esquema de endereçamento para os
segmentos de 32 bits, que permite o endereçamento
indireto através 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 Endereçamento 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 variáveis i em EAX
de Pilha locais
a[0] EBP + 8 M[4 * EAX + EBP + 8]
a[1] EBP + 12
a[2] EBP + 16
38
Endereçamento na Família Motorola: 68000/68020/68030
39
♦ Exemplo de instrução do 680x0:
a) Instrução de um operando no 680x0.
b) Palavra de extensão no 68000.
c) Formato curto da palavra de extensão no 68020 e 68030.
d) Formato completo de palavras de extensão 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 relação a base
(0, 1 ou 2 palavras).
I/IS - Seleciona entre indexado ou indireto.
40
Discussão Acerca dos Modos de Endereçamento
41
PDP-11:
Motorola 68000:
42
Intel 8088 e 80286:
DEC VAX:
43
3.3. Tipos de Instrução
♦ Exemplos:
• Motorola (680x0):
∗ MOVE: instrução de propósito geral, que permite a
transferência entre registradores, memória ou pilha.
• Intel (8088/80x86):
∗ MOV, etc: instruções bem mais limitadas. Existem
muitas delas, que tornam possível a transferência
entre dois lugares quaisquer.
44
Operações Diádicas
♦ Instruções Aritméticas:
• Adição, subtração, multiplicação e divisão.
♦ Instruções Lógicas:
• AND, OR, XOR.
• AND: calcula o produto booleano bit a bit de dois
argumentos de uma palavra cada, gerando como
resultado também uma palavra.
∗ Uso importante: extração de bits de uma palavra,
através de uma máscara. A operação AND tende a
remover os bits iguais a 1.
∗ Exemplo: extração do segundo caractere de uma
palavra de 4 bytes para ser imprimido.
◊ Solução: isolá-lo dos demais bytes e justificá-lo à direita.
◊ Extração:
46
∗ Exemplo: inverter os 8 bits do segundo caractere de
uma palavra de 4 bytes, sem alterar os demais bits.
◊ Inversão de bits:
47
Operações Monádicas
48
♦ Rotações: são operações nas quais os bits do operando são
movidos para a esquerda ou direita, sendo que os bits que
saem da palavra reaparecem do outro lado, formando o
resultado.
• Exemplo: rotação de 2 bits de uma palavra para a direita.
49
• Exemplo: deslocamento de 2 bits de uma palavra para a
direita, sem a extensão do sinal e com a extensão do sinal.
50
Comparações e Desvios Condicionais
51
• Exemplo: teste do bit de sinal de um resultado.
∗ Se o bit de sinal é 1 (número negativo), o programa
continua a partir do endereço Rótulo. Se o bit de
sinal é 0, o programa continua a partir da instrução
seguinte a instrução de salto.
52
♦ Comparação entre duas palavras: permite avaliar se elas
são iguais ou qual é a maior.
• Instrução que a princípio precisa de três endereços: dois
para os operandos e um para o endereço de desvio.
• Se a máquina não permite instruções de três endereços,
uma solução é disponibilizar dois tipos de instruções:
∗ Instrução de comparação, que armazena alguns bits
de condição a respeito do resultado.
∗ Instrução de desvio condicional, que consulta os bits
de condição e eventualmente faz o desvio.
∗ Este tipo de solução é adotada pelas famílias
Motorola e Intel.
♦ O resultado de uma comparação depende dos sinais dos
operandos. Em geral, faz-se a comparação entre dois
valores de mesmo sinal, ou precisa-se ter instruções
específicas para números sem sinal e números 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 após o loop} goto 1;
2: {primeiro comando após o loop}
(a) teste no final (b) teste no início
Código equivalente em Pascal
for i := 1 to n do begin ... end
55
♦ Algumas máquinas podem disponibilizar instruções
especiais que fazem o controle de contagem de interações,
teste de condição e desvio numa única instrução.
• Intel:
∗ 8088/80286: Instrução LOOP, que decrementa o
registrador CX de 1 e salta para um dado rótulo se
o resultado não for 0. Se for 0, a execução continua a
partir da próxima instrução.
∗ 80386: Idem para o registrador ECX.
• Motorola:
∗ Instrução para uma solução mais geral:
◊ Primeiro testa uma determinada condição, que se não
satisfeita, encerra o loop.
◊ Decrementa um registrador D, que se resultar num valor
maior ou igual a 0, repete o loop; caso contrário, encerra
o loop.
56
Entrada e Saída
57
3.4. Fluxo de Controle
58
Fluxo de Controle Seqüencial 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.
• Violação de proteção.
• Código de operação indefinido.
• Estouro da pilha.
• Divisão por zero.
63
Interrupções
64
♦ Problemas: o programa interrompido deve voltar a ser
executado no mesmo estado em que estava antes de ocorrer
a interrupção.
INT
Controlador
INTA
do
Dispositivo CPU
DADOS
de
E/S Vetor de
Interrupção
66
Memória
0000h Endereço do vetor 0
Tabela 0002h Endereço do vetor 1
de 0004h Endereço do vetor 2
Vetores 0006h Endereço do vetor 3
de 0008h Endereço do vetor 4
000Ah Endereço do vetor 5
Interrupção
000Ch Endereço do vetor 6
000Eh Endereço do vetor 7
• Tarefas do Software:
1. A sub-rotina de tratamento da interrupção salva o
conteúdo dos registradores da CPU que irá utilizar, por
exemplo, na pilha.
2. A sub-rotina realiza a sua tarefa propriamente dita: a
operação de E/S (por exemplo, lê o código da tecla
pressionada e o armazena num buffer).
3. A sub-rotina restaura o conteúdo dos registradores
salvos.
4. A sub-rotina executa uma instrução de retorno da
interrupção, permitindo a CPU recuperar o seu status
mínimo (PSW).
5. O programa interrompido prossegue então como se a
interrupção não tivesse ocorrido.
♦ Conceito relativos a interrupção:
• Transparência: uma sub-rotina de interrupção é dita
transparente quando após o retorno da sub-rotina o
programa interrompido volta para o estado exato em que
estava anteriormente a chegada da interrupção.
• Mascaramento: mecanismo que permite desabilitar uma
interrupção ou um conjunto de interrupções.
67
• Simultaneidade de Interrupções: se duas interrupções
ocorrem ao mesmo instante, a de maior prioridade será
atendida.
68
• Uma interrupção pode ocorrer enquanto outra está sendo
tratada pela sua sub-rotina de tratamento. Soluções
possíveis:
∗ Inibição: todas as sub-rotinas de tratamento de
interrupção inibem interrupções subseqüentes antes
de tomar qualquer outra atitude.
◊ Problema: pode-se perder outras interrupções.
∗ Prioridade: cada interrupção tem uma prioridade
diferente, definida na PSW, por exemplo. Eventos
mais prioritários são atribuídos a interrupções de
maior prioridade. Quando uma interrupção de
prioridade n estiver sendo tratada, somente eventos
mais prioritários podem interrompê-la; eventos
menos prioritários devem aguardar.
69
♦ Exemplo: Supor um sistema com uma impressora, um disco
e uma interface RS232, com prioridades 2, 4 e 5
respectivamente.
Interrupção
RSI do disco
da RS232.
Interrupção 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
usuário sora RS232 disco sora usuário
Usuário Usuário Usuário Usuário Pilha
Impressora Impressora Impressora
70
Intel
Motorola:
71