modos de endereçamento maringá 2014

Propaganda
UNINGÁ – UNIDADE DE ENSINO SUPERIOR INGÁ
FACULDADE INGÁ
DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
ERINALDO SANCHES NASCIMENTO
MODOS DE ENDEREÇAMENTO
MARINGÁ
2014
SUMÁRIO
6 MODOS DE ENDEREÇAMENTO......................................................................................2
6.1 ENDEREÇAMENTO REGISTER-ONLY..........................................................................2
6.2 ENDEREÇAMENTO IMEDIATO......................................................................................2
6.3 ENDEREÇAMENTO BASE.............................................................................................2
6.4 REGISTRADORES PRESERVADOS..............................................................................3
6.5 ENDEREÇAMENTO PSEUDO DIRETO.........................................................................4
6.6 EXERCÍCIOS...................................................................................................................5
6.7 REFERÊNCIA BIBLIOGRÁFICA.....................................................................................6
6 MODOS DE ENDEREÇAMENTO
O microprocessador MIPS utiliza cinco modos de endereçamento: register-only,
imediato, base, relativo ao PC, e pseudo-direto. Os três primeiros modos ( endereçamento
register-only, imediato e base) definem os modos de leitura e escrita dos operandos. Os
dois últimos (endereçamento relativo ao PC e pseudo-direto) definem modos de escrita do
contador de programa, PC.
6.1 ENDEREÇAMENTO REGISTER-ONLY
Endereçamento somente registradores usa registradores para todos os operandos
de origem e destino. Todas as instruções do tipo R usam endereçamento registar-only.
6.2 ENDEREÇAMENTO IMEDIATO
Endereçamento imediato usa o imediato 16-bit acompanhado de registradores e
operandos. Algumas instruções tipo I, tais como adicionar imediata (addi) e load upper
immediate (lui), usam endereçamento imediato.
6.3 ENDEREÇAMENTO BASE
Instruções de acesso à memória, como load word (lw) e store word (sw), usam
endereçamento base. O endereço efetivo do operando memória é encontrado
adicionando o endereço de base no registrador rs para o deslocamento de 16 bits
estendido encontrado no campo imediato.
2
6.4 REGISTRADORES PRESERVADOS
As instruções de desvio condicional usam o endereçamento relativo ao PC para
especificar o novo valor do PC, se o desvio condicional é executado. O deslocamento
indicado no campo imediato é adicionado ao PC para obter o novo PC; portanto, o
endereço de destino do desvio é dito ser relativa ao atual PC.
O código de exemplo no quadro 1 mostra parte da função fatorial. A Figura 1
mostra o código de máquina para a instrução beq. O endereço de destino de desvio
(EDD) o endereço da próxima instrução a ser executada se o desvio for executado. A
instrução beq na Figura 1 tem um EDD de 0xB4, o endereço de instrução do rótulo else.
Quadro 1: Calcular o endereço de destino do desvio
Código assembly
0xA4
0xA8
0xAC
0xB0
0xB4
0xB8
beq $t0, $0, else
addi $v0, $0, 1
addi $sp, $sp, 8
jr
$ra
else: addi $a0, $a0, -1
jal fatorial
Figura 1: Código de máquina para a instrução beq.
O campo imediato de 16 bits dá o número de instruções entre o EDD e a instrução
após a instrução de desvio (a instrução no PC + 4). Neste caso, o valor do campo de
imediato beq é 3 porque o EDD (0xB4) é terceira instrução após PC + 4 (0xA8).
O processador calcula o EDD da instrução pelo imediato de 16 bits, multiplica-o por
4 (para converter palavras de bytes), e adiciona-o ao PC + 4.
3
6.5 ENDEREÇAMENTO PSEUDO DIRETO
No endereçamento direto, um endereço é especificado na instrução. As instruções
de salto, j e jal, idealmente usariam endereçamento direto para especificar um endereço
alvo para salto de 32 bits para indicar o endereço de instrução a ser executada em
seguida.
A codificação de instruções tipo J não tem bits suficientes para especificar um
endereço para salto de 32 bits completo. Seis bits da instrução são utilizados para o
código de operação (opcode), de modo que apenas 26 bits são deixados para codificar o
endereço para salto.
● Os dois bits menos significativos, JTA 1:0, deve ser sempre 0, porque as instruções
são palavra alinhada.
● Os próximos 26 bits, JTA27:2, são formados a partir do campo de endereço da
instrução. Os quatro bits mais significativos, JTA31:. 28, são obtidos a partir dos
quatro bits mais significativos do PC + 4
Este modo de endereçamento é denominado pseudo direto.
O exemplo no quadro 2 ilustra uma instrução jal usando endereçamento pseudo
direto. O endereçamento alvo para salto da instrução jal é 0x004000A0.
Quadro 2 Calcular o endereço alvo para salto
Código Assembly
0x0040005C
...
0x004000a0
jal
soma: add
soma
$v0, $a0, $a1
A Figura 2 mostra o código de máquina para a instrução jal do quadro 2.
Os quatro primeiros bits e os dois últimos bits do endereço de salto são
4
descartados. Os restantes bits são armazenados no campo do endereço de 26 bits (addr).
O processador calcula o endereço de salto da instrução tipo J, acrescentando dois
zeros e antecedendo os quatro bits mais significativos do PC + 4 para o campo de
endereço de 26 bits (addr).
Os quatro bits mais significativos são formados a partir de PC + 4, a faixa de salto
é limitada. Todas as instruções tipo J, j e jal, usam endereçamento pseudo direto.
A instrução de salto registo, jr, não é uma instrução tipo J. É uma instrução do tipo
R, que salta para o valor de 32 bits, mantida em registrador rs.
6.6 EXERCÍCIOS
1. Calcule o campo imediato e mostre o código de máquina para a instrução de desvio
não igual (bne)no programa seguinte.
# código assembly MIPS
0x40 Loop: add $t1, $a0, $s0
0x44
lb $t1, 0 ($t1)
0x48
add $t2, $a1, $s0
0x4C
sb $t1, 0 ($t2)
0x50
addi $s0, $s0, 1
0x54
bne $t1, $0, Loop
0x58
lw $s0, 0 ($sp)
2. Converta as seguintes instruções de montagem beq, j, e jal em código de máquina. Os
endereços das instruções são dados à esquerda de cada instrução.
a)
b)
5
c)
d)
e)
3. Considere o seguinte trecho de linguagem assembly MIPS. Os números à esquerda
de cada instrução indicam o endereço da instrução.
a) Traduza a sequência de instruções em código de máquina. Escreva as instruções
de código de máquina em hexadecimal.
b) Liste o modo de endereçamento usado em cada linha de código.
6.7 REFERÊNCIA BIBLIOGRÁFICA
HARRIS, David Money & HARRIS, Sarah L. Digital Design and Computer Architecture,
2ª ed., Elsevier: 2013.
6
Download