Buscar

Topico_06 (Modos de endereçamento e pseudo instruções)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Tópico 6: Arquitetura (Modos de endereçamento e 
pseudo instruções)
Prof. Jhonattan Cordoba Ramirez
Escola de Engenharia
Universidade Federal de Minas Gerais (UFMG)
ELT123 - Arquitetura e Organização de Computadores
Endereçamento Register-Only: O endereçamento register-only utiliza registradores
para todos os operandos fonte e destino. Todas as instruções tipo-R utilizam
endereçamento register-only.
Endereçamento Imediato: O endereçamento imediato utiliza os 16 − 𝑏𝑏𝑖𝑖𝑡𝑡𝑠𝑠 do imediato,
juntamente com os registradores como operandos. Algumas instruções tipo-I, como
adicionar imediato (addi) e carregar imediato superior (lui), utilizam endereçamento
imediato.
Modos de endereçamento
Endereçamento de Base: Instruções de acesso à memória, como carregar palavra 
(lw) e armazenar palavra (sw), utilizam endereçamento de base. O endereço efetivo 
do operando de memória é encontrado adicionando- se o endereço de base no
registrador com o offset de 16 − 𝑏𝑏𝑖𝑖𝑡𝑡𝑠𝑠, estendido em sinal, encontrado no campo do 
imediato.
Endereçamento Relativo ao PC (Contador de Programa): Instruções de branch
condicional utilizam endereçamento relativo ao PC para especificar um novo valor 
para o PC se o desvio é realizado. O offset com sinal no campo do imediato é
adicionado ao PC para obter um novo PC; consequentemente, o endereço de destino 
do branch é dito como sendo relativo ao PC atual.
Modos de endereçamento
Register Only
Operandos em registradores
Exemplo: add $s0, $t2, $t3
Exemplo: sub $t8, $s1, $0
Imediato
16-bit imediato usados como um 
operando
Exemplo: addi $s4, $t5, -73
Exemplo: ori $t3, $t7, 0xFF
Modos de endereçamento
Endereço base
O endereço do operando é:
Endereço base + sinal-estendido imediato
Exemplo: lw $s4, 72($0)
Endereço = $0 + 72
Exemplo: sw $t2, -25($t1)
Endereço = $t1 - 25
Endereçamento relativo ao PC
0x10 beq $t0, $0, else
0x14 addi $v0, $0, 1
0x18 addi $sp, $sp, i
0x1C jr $ra
0x20 else: addi $a0, $a0, -1
0x24 jal factorial
Modos de endereçamento
Calculando o endereço destino do desvio (Branch)
beq $t0, $0, else
opcode rs rt endereço
4 8 0 3
16 bits5 bits5 bits6 bits
# MIPS assembly code
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)
bne $t1, $0, loop
opcode rs rt endereço
5 9 0 -6
16 bits5 bits5 bits6 bits
opcode rs rt endereço
000101 01001 00000 1111 1111 1111 1010
16 bits5 bits5 bits6 bits
Exemplo
Modos de endereçamento
A codificação de instruções do Tipo-J não possui bits suficientes para especificar um JTA de 32-bits
Seis bits de instrução são utilizados pelo opcode, então, apenas 26-bits são deixados para codificar o JTA.
Felizmente, os dois bits menos significativos, JTA(1:0), deve sempre ser 0, pois as instruções são 
alinhadas em palavra.
Os próximos 26-bits, JTA(27:2), são tomados do campo addr da instrução.
Os quatro bits mais significativos, JTA(31:28), são obtidos dos quatro bits mais significativos de 𝑃𝑃𝐶𝐶 + 4.
Endereçamento direto de salto?
(Jump Target Address - JTA)j e jal
Endereçamento pseudo-direto
Endereçamento pseudo-direto
0x0040005C jal sum
...
0x004000A0 sum: add $v0, $a0, $a1
jta 0000 0000 0100 0000 0000 0000 1010 0000
26-bits addr 0000 0000 0100 0000 0000 0000 1010 0000
0 1 0 0 0 2 8
(0x0100028)
3 0x0100028 000011 00 0001 0000 0000 0000 0010 1000
addraddrop op
Valores nos campos Código de maquina
• Pseudo-Instruções
• Exceções
• Instruções aritméticas com sinal e sem sinal
• Instruções de vírgula flutuante
Miscelânea
Pseudo-Instruções
Pseudo-Instruções Instruções MIPS
li $s0, 0x1234AA77
lui $s0, 0x1234
ori $s0, 0xAA77
clear $t0 add $t0, $0, $0
move $s1, $s2 add $s1, $s2, $0
nop sll $0, $0, 0
Exceções
Uma exceção é a forma como uma chamada de função sem marcação, 
salta para um novo endereço. Exceções podem ser causadas por 
hardware ou software:
• Causadas por:
• Hardware, também chamada de interrupção.
• Software, também chamadas de traps ou armadilhas.
• Quando exceções ocorrem, o processador:
• Salva a causa de uma exceção e o valor do PC no momento em 
que a exceção ocorre.
• Pula para a função de tratamento de exceção. (No MIPS, a função 
de tratamento de exceção está sempre localizada em 0x80000180)
• Volta ao programa.
Exceções Motivo
Interrupção 
de hardware
0x00000000
System call 0x00000020
Breakpoint 
(Divide por 0)
0x00000024
Instrução 
indefinida
0x00000028
Overflow 
aritmético
0x00000030
• Não faz parte do arquivo de registro:
• Cause: Registra a causa da exceção
• EPC (PC de exceção): registra o PC onde 
ocorreu a exceção
• EPC e Cause: parte do coprocessador 0
• Mover do coprocessador 0
• mfc0 $k0, EPC
• Move o conteúdo do EPC para $k0
Exceções
• Processador salva PC de causa e exceção 
em Cause e EPC
• O processador salta para o manipulador de 
exceções (0x80000180)
• Manipulador de exceção:
• Salva registros na pilha
• Lê registrador Cause
• mfc0 $k0, Cause
• Lida com exceções
• Restaura registros
• Retorna ao programa
• mfc0 $k0, EPC
• jr $k0
• Adição e subtração
• Multiplicação e Divisão
• Set less than (slt)
Instruções com sinal e sem sinal
• Com sinal: add, addi, sub
• Mesma operação que as 
versões não assinadas
• Mas o processador tem 
exceção no overflow
• Sem sinal: addu, addiu, subu
• Não aceita exceções no 
overflow
Nota: o addiu sign-estende o valor imediato
0x7FFFFFFF + 0x7FFFFFFF = 0xFFFFFFFE = −2
0x80000001 + 0x80000001 = 0x80000002
• Adição e subtração
• Multiplicação e Divisão
• Set less than (slt)
• Com sinal: mult, div • Sem sinal: multu, divu
0xFFFFFFFF * 0xFFFFFFFF
• Com sinal: 0xFFFFFFFF = -1 • Sem sinal: 0xFFFFFFFF = Numero grande
0x0000000000000001 0xFFFFFFFE00000001
Instruções com sinal e sem sinal
• Comparação de dois registradores slt, e comparação de um 
registrador e um imediato slti Com sinal
• Comparação de dois registradores sltu, e comparação de um 
registrador e um imediato sltiu Sem sinal
• Em uma comparação com sinal, 0x80000000 é menor do que 
qualquer numero, é o maior numero negativo em complemento de 2.
• Em uma comparação sem sinal, 0x80000000 é maior que 
0x7FFFFFFF, mas menor que 0x80000001, pois todos os números 
são positivos.
• Adição e subtração
• Multiplicação e Divisão
• Set less than (slt)
Instruções com sinal e sem sinal
• Com sinal:
• O sinal se estende para criar um valor de 
32 bits para carregar no registrador
• Carregar meia palavra: lh
• Carregar um byte: lb
• Sem sinal:
• Zero-Extends para criar valor de 32 bits
• Carregar meia palavra sem sinal: lhu
• Carregar um byte: lbu
Instruções com sinal e sem sinal
Instruções de vírgula flutuante
• Coprocessador de ponto flutuante (Coprocessador 1)
• 32 registradores de ponto flutuante de 32 bits ($ f0- $ 
f31)
• Valores de precisão dupla mantidos em dois registros 
de ponto flutuante
• Exemplo, $ f0 e $ f1, $ f2 e $ f3 etc.
• Registradores de ponto flutuante de precisão 
dupla: $ f0, $ f2, $ f4, etc.
Registrador
Número do 
registrador
Uso
$fv0 - $fv1 0, 2 Valores de retorno
$ft0 - $ft3 4, 6, 8, 10
Variáveis 
temporárias
$fa0 - $fa1 12, 14
Argumentos na 
função
$ft4 - $ft5 16, 18
Variáveis 
temporárias
$fs0 - $fs5 20, 22, 24, 26, 28, 30
Variáveis 
armazenadas
Instruções de vírgula flutuante
• Opcode = 17 (0100012)
• Precisão única:
• cop = 16 (100002)
• add.s, sub.s, div.s, neg.s, abs.s, etc.
• Dupla precisão:
• cop = 17 (100012)
• add.d, sub.d, div.d, neg.d, abs.d, etc.
• 3 operandos de registro:
• fs, ft: operandos de origem
• fd: operandos de destino
• Set/clear condition flag: fpcond
• Igualdade: c.seq.s, c.seq.d
• Menor que: c.lt.s, c.lt.d
• Menor ou igual: c.le.s, c.le.d
• Conditional branch
• bclf: branches if fpcond is FALSE
• bclt: branches if fpcond is TRUE
• Loads and stores
• lwc1: lwc1 $ft1, 42($s1)
• swc1: swc1 $fs2, 17($sp)
	Tópico 6: Arquitetura (Modos de endereçamentoe pseudo instruções)
	Slide Number 2
	Slide Number 3
	Slide Number 4
	Slide Number 5
	Slide Number 6
	Slide Number 7
	Slide Number 8
	Slide Number 9
	Slide Number 10
	Slide Number 11
	Slide Number 12
	Slide Number 13
	Slide Number 14
	Slide Number 15
	Slide Number 16
	Slide Number 17
	Slide Number 18

Continue navegando