Representação de instruções e modos de endereçamento

Propaganda
Formatos de instruç
instruções
• Formato de instruções
Organização e Arquitetura
de computadores
Conjunto de instruções: formatos de
instruções e modos de endereçamento
Prof. Dr. Luciano José Senger
– O formato de instruções de uma arquitetura permite
especificar, dentre os bits disponíveis para representar
uma instrução, a quantidade de bits que será utilizada
para o opcode e para os endereços de operandos ou
imediatos
– Em arquiteturas estruturadas, o tamanho de instruções
é fixo e existem poucos formatos (p.e. MIPS tem 3
formatos básicos); arquiteturas não bem estruturadas
podem ter vários modos de endereçamento e vários
formatos de instruções, inclusive com a utilização de
códigos de expansão
Formatos de instruç
instruções
• Expansão de código de operação:
– Pode-se empregar os campos de operandos para expandir o
número de instruções de máquina
– Ex: instruções de 16 bits, endereços de 4 bits, 16 registradores
– 15 instruções de 3 endereços;
– 14 instruções de 2 endereços;
– 31 instruções de 1 endereço;
– 16 instruções sem endereço
Modos de endereç
endereçamento
Modos de endereç
endereçamento
• Modos de endereçamento
• Modos de
endereçamento
– Permitem especificar como os operando estão
disponíveis na memória ou no banco de registradores
– Diferentes arquiteturas têm números de modos de
endereçamento diferentes
• Tipos comuns
–
–
–
–
–
–
–
Imediato
Direto
Indireto
via Registrador
Indireto via Registrador
Indexado
Pilha
como
especificar onde
estão os
operandos?
– Ex: Arquitetura
hipotética instrução LD
carrega o
operando para o
registrador
acumulador
(AC) - instruções
através da
linguagem RTL;
– XR - registrador
especial para
endereçamento
Assembly
Modo
Ação
–
Direto
LD ADR
AC <- M[ADR]
Indireto
LD @ADR
AC <- M[M[ADR]]
Relativo
LD $ADR
AC <- M[PC + ADR]
Imediato
LD #NBR
AC <- NBR
LD ADR(X)
AC <- M[ADR + XR]
Indexado
LD R1
AC <- R1
Registrador
Registrador indireto
Auto incremento
LD (R1)
AC <- M[R1]
LD (R1)+
AC <- M[R1]; R1 <- R1+ 1
Modos de endereç
endereçamento
Endereço de
memória
200
Load to AC
Mode
201
Endereço = 500
202
próxima instrução
Modo
Endereço
efetivo
Conteúd
o do AC
Direto
500
800
399
450
400
700
Imediato
201
500
500
800
Indireto
800
300
600
900
702
325
Relativo
702
325
Indexado
600
900
Registrador
----
400
Registrador indireto
400
700
Auto incremento
400
700
800
•
Modos de endereç
endereçamento: 8086
Conteúdo
300
Como os modos de de
endereçamento funcionam: um
exemplo:
• PC = 200
• R1 = 400
• XR = 100
• AC
Modos de endereç
endereçamento: PDPPDP-11
Imediato
Operando é uma constante constante está codificada na
instrução
mov ax,1000h
ax <= 1000h
Registrador
Operando é um registrador um
dentre: ax,bx,cx,dx,si,di,sp,bp
mov ax, bx
ax <= (bx)
Direto
Endereço do operando codificado na
instrução Operando está na memória
mov ax, [1000h]
ax <= conteúdo da
memória endereçada por
1000h e 1001h
Indexado
ou indireto
via registrador
Endereço do operando é o conteúdo
de registrador (Apenas um dentre
bx, bp, si, di, atuam como
apontadores para o operando na
memória)
mov ax, [bx]
ax <= conteúdo da
memória cujo endereço
está em bx
Duplamente
indexado
Endereço do operando é a soma dos
conteúdos de dois registradores
(combinações possíveis: [bx+di],
[bx+si], [bp+di], [bp+si] )
mov ax, [bx + di]
ax <= conteúdo da
memória cujo endereço é
dado por (bx)+(di)
Duplamente
indexado com
deslocamento
Endereço do operando é a soma dos
conteúdos de dois registradores
mais uma constante
combinações possíveis:
acrescente uma constante às
combinações acima
mov ax, [bx+di+1000h]
ax <= conteúdo da
memória cujo endereço é
dado por (bx)+(di)+
1000h
Modos de endereç
endereçamento: Pentium II
• Endereço virtual (ou efetivo) é um deslocamento dentro do
segmento
– endereço linear (LA) = endereço início do segmento + endereço
efetivo (deslocamento)
– se paginação está habilitada, este endereço linear é traduzido via
tabela de páginas para um endereço físico
• Alguns Recursos usados:
– 6 reg. de segmento (SR): determinam o início do segmento
• escolha depende do contexto da execução e da instrução
– registradores descritores: associados a cada SR (não são visíveis)
• mantêm direitos de acesso, endereços limites
– registrador base (B) e registrador índice (I)
• usados para a construção dos endereços
Modos de endereç
endereçamento: Pentium II
• Estão disponíveis 12 modos de endereçamento
– imediato
• Operando = end. que está no campo da instrução [A]
– operando registrador
• LA = R
– por deslocamento
• LA = (SR) + A
– base
• LA = (SR) + (B)
– base com deslocamento
• LA = (SR) + (B) + A
– índice com fator de escala e deslocamento
• LA = (SR) + (I) x (S) + A
– base mais índice e deslocamento
• LA = (SR) + (B) +(I) + A
– base mais índice com fator de escala e deslocamento
• LA = (SR) + (I) x S + (B) + A
– relativo
• LA = (PC) + A
Modos de endereç
endereçamento: Pentium II
Formato de instruç
instruções: Pentium II
Consideraç
Considerações finais
• Modos de endereçamento
– Cada forma de endereçamento serve para um propósito
específico:
• Auto-indexação: empilhamento e desempilhamento de
parâmetros de procedimentos
• Direto: acesso a variáveis globais
• Imediato: transferência de constantes
• Indexado: acesso a variáveis locais
• Registrador: armazenamento de variáveis locais
• Registrador indireto: armazenamento de apontadores de
estruturas
Leituras Recomendadas
• Stallings, capítulo 10
• Tanembaum, capítulo 5 (182 a 225)
Download