Você está na página 1de 31

Arquitetura de Computadores

ISA MIPS
Ivan Saraiva Silva
Introdução à ISA MIPS
• MIPS = Microprocessor Without
Interlocked Pipeline Stage
• ISA = Istruction Set Architecture
– Contem definições da arquiteturais relativas a
programação
• Tipos de dados;
• Registradores;
• Instruções;
• Formato de instruções;
• ....
Formato de Instruções MIPS
• A ISA MIPS usa três formatos de instrução
6 bits 26 25
5 bits 21 20
5 bits 16 15
5 bits 1110
5 bits 6 5
6 bits
31 0

op rs rt rd shamt funct
Formato tipo R (Operações entre registradores)
Instruções de Formato R
• op: opcode – operação básica da instrução
• rs: registrador do primeiro operando de origem
• rt: registrador do segundo operando de origem
• rd: registrador do operando destino
• shamt: Quantidade de deslocamento
• funct: função – define uma variante da operação
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
op rs rt rd shamt funct
Formato tipo R
Formato de Instruções MIPS
• A ISA MIPS usa três formatos de instrução
6 bits 5 bits 5 bits 16 bits
31 26 25 21 20 16 15 0

op rs rt constante ou endereço
Formato tipo I (Endereçamento imediato)

6 bits 26 bits
31 26 25 0

op constante ou endereço
Formato tipo J (Saltos e chamada de procedimentos)
Representando Instruções Tipo R
• Exemplo:
• Como codificar: add $t0, $s1, $s2
op rs rt rd shant funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
000000 10001 10010 01000 00000 100000

add (17 = $s1) (18 = $s2) (8 = $t0)


Uso de Registradores no MIPS
• 32 registradores estão disponíveis no MIPS
• Uso dos registradores é especificado pela
ISA
– $s0, $s1, $s2, … # para variáveis
– $t0, $t1, $t2, … # para temporários
• A palavra do MIPS é de 32 bits
– Registradores também têm 32 bits
Uso de Registradores no MIPS
Preservado na
Registrador Número Uso
chamada?
$zero 0 Valor 0 n.a.
$at 1 Assembler temporary N
$v0-$v1 2-3 Resultados (procedimentos) N
$a0-$a3 4-7 Argumentos (procedimentos) N
$t0-$t7 8-15 Temporários N
$s0-$s7 16-23 Valores salvos S
$t8-$t9 24-25 Temporários N
$gp 28 Ponteiro global S
$sp 29 pilha S
Sfp 30 quadro S
$ra 31 retorno S
Memória
• Palavras de 32 bits
• Memória endereçada por byte
– Uma palavra é armazenada em quatro bytes
consecutivos da memória
– Dados e instruções são alinhados em endereços
que são múltiplos de 4
Memória

Memória
Endereço 0
Endereço 1
Endereço 2 Palavra 0

Endereço 3
Endereço 4
Endereço 5
Endereço 6 Palavra 1

Endereço 7
Memória – “Endianness”
Litlle Endian
Memória
Byte 3 Byte 2 Byte 1 Byte 0
Endereço 0
Endereço 1
Endereço 2 Palavra 0

Endereço 3
Endereço 4
Endereço 5
Endereço 6 Palavra 1

Endereço 7
Byte 3 Byte 2 Byte 1 Byte 0
Big Endian
Conjunto de Instruções
• O conjunto de instruções MIPS possui algumas
características fundamentais
– Apenas as instruções de carga (Load) e armazenamento
(Store) podem ler/escrever na memória
• Estas intruções podem manipular
– Palavras (32 bits – quatro bytes)
– Meia-palavra (16 bits – dois bytes
– Byte (oito bits – um byte)
– Operações (cálculo) só são realizados em dados
armazenados em registradores
Conjunto de Instruções
• Operações no MIPS envolvem
– Carga (Load) dos operando para registradores;
– Realização das operações com os registradores;
– Armazenamento (Store) do resultado na
memória;
• O conjunto de instruções MIPS segue a
filosofia RISC
RISC x CISC
• Conjunto de instruções • Conjunto de instruções
reduzido complexo
– Toda complexidade é do – Toda a complexidade é do
software hardware
• Poucos formatos de instrução • Vários formatos de instrução
• Endereçamento da memória • Endereçamento da memória
simples complexo
• Todas (ou quase) as instruções • Número variável de ciclos para
executadas em uma mesma executar cada instrução
quantidade de ciclos
(preferencialmente 1)
Exemplos de Instruções
• Carga (Load) e Armazenamento (Store)
• Lógicas e Aritméticas
• Deslocamento
• Saltos e desvios condicionais

• Verificar as especificação da instruções,


disponível em
“www.mrc.uidaho.edu/mrc/people/jff/digital/MIP
Sir.html”
Carga e Armazenamento
Instrução Significado (pseudocódigo)
• lw $t1, 4($t3) # $t1 = M[4+ ($t3)]
• sw $t1, 4($t3) # M[4+ ($t3)] = $t1

• Também é possível fazer carga e armazenamento de byte e


meia palavra, usando as instruções lb, sb, lh e sh, que
apresentam a mesma sintax.
Lógicas e aritméticas
Instrução Significado (pseudocódigo)
• add $t1, $t2, $t3 # $t1 = $t2 + $t3
• sub $t1, $t2, $t3 # $t1 = $t2 - $t3
• and $t1, $t2, $t3 # $t1 = $t2 & $t3 (bitwise and)
• or $t1, $t2, $t3 # $t1 = $t2 | $t3 (bitwise or)

• # set if less than:


• slt $t1, $t2, $t3 # $t1 = $t2 < $t3 ? 1 : 0
Deslocamento
Instrução Significado (pseudocódigo)

#Deslocamentos lógicos
• sll $t1, $t2, 3 # $t1 = $t2 << 3
• srl $t1, $t2, 8 # $t1 = $t2 >> 3

#Deslocamento aritmético
• sra $t1, $t2, 3 # $t1 = $t2 >> 3 (copia bit de sinal)
Saltos e desvios
Instrução Significado (pseudocódigo)

#Desvio condicional
• beq $t1, $t2, label # IF St1 == $t2, PC = endereço do
label
ELSE PC = PC+4

#Desvio incondicional
• j label # PC = endereço do label
Desvio e retorno de sub-rotina
Instrução Significado (pseudocódigo)

#Desvio para subrotina


• jal label # $ra = PC, PC = PC(31 downto 28)&J&”00”
PC = endereço do label)

#Desvio incondicional
• jr $ra # PC = ($ra)
Lista de instruções
Carga (Load) e Armazenamento (Store)

Instruction name Mnemonic Format


Load Byte LB I
Load Halfword LH I
Load Word Left LWL I
Load Word LW I
Load Byte Unsigned LBU I
Load Halfword Unsigned LHU I
Load Word Right LWR I
Store Byte SB I
Store Halfword SH I
Store Word Left SWL I
Store Word SW I
Store Word Right SWR I
Instruction name Mnemonic Format
Lógicas e Aritméticas
Add ADD R
Add Unsigned ADDU R
Subtract SUB R
Subtract Unsigned SUBU R
And AND R
Or OR R
Exclusive Or XOR R
Nor NOR R
Set on Less Than SLT R
Set on Less Than Unsigned SLTU R
Add Immediate ADDI I
Add Immediate Unsigned ADDIU I
Set on Less Than Immediate SLTI I
Set on Less Than Immediate
Unsigned SLTIU I
And Immediate ANDI I
Or Immediate ORI I
Exclusive Or Immediate XORI I
Load Upper Immediate LUI I
Deslocamento

Instruction name Mnemonic Format


Shift Left Logical SLL R
Shift Right Logical SRL R
Shift Right Arithmetic SRA R
Shift Left Logical Variable SLLV R
Shift Right Logical Variable SRLV R
Shift Right Arithmetic Variable SRAV R
Saltos e desvios Condicionais

Instruction name Mnemonic Format


Jump Register JR R
Jump and Link Register JALR R
Branch on Less Than Zero BLTZ I
Branch on Greater Than or Equal to Zero BGEZ I
Branch on Less Than Zero and Link BLTZAL I
Branch on Greater Than or Equal to Zero and Link BGEZAL I
Jump J J
Jump and Link JAL J
Branch on Equal BEQ I
Branch on Not Equal BNE I
Branch on Less Than or Equal to Zero BLEZ I
Branch on Greater Than Zero BGTZ I
Multiplicação e Divisão

Instruction name Mnemonic Format


Move from HI MFHI R
Move to HI MTHI R
Move from LO MFLO R
Move to LO MTLO R
Multiply MULT R
Multiply Unsigned MULTU R
Divide DIV R
Divide Unsigned DIVU R
Instruções e código assembly
• Instruções:
– É a definição do conjunto de operações
realizadas pelo microprocessador
(eventualmente pseudo-instruções)
– Inclui a definição de formato
• Código assembly
– É a forma como o programador utiliza as
instruções
– Inclui mnemônicos e labels
Instruções e código assembly
• Instruções (exemplo):
– add (formato R) codop | rs | rt | rd | shant | funct
– beq (formato I) codop | rs | rt | immediate
• Código assembly
– add $s0, $t1, $v0
• Adicione $t1 e $v0, coloque o resultado em $s0
– beq $s1, $s2 Label
• Se Ss1 == $s2, então salte para Label
Modos de endereçamento
• O MIPS disponibiliza cinco modos de
endereçamento
– Endereçamento em registrador
• O operando é um registrador
• O endereço é o endereço do registrador (formato R)
– Endereçamento de base ou deslocamento
• O operando está na posição de memória apontada
pela soma de um registrador com uma constante na
instrução
• Ex. lw $t0, 4($sp)
Modos de endereçamento
– Endereçamento Imediato
• O operando é uma constante na instrução
• Ex. addi $A0, $A0, -1
– Endereçamento relativo ao PC
• O endereço é a soma do PC com uma constante na
instrução
– Endereçamento Pseudodireto
• O endereço do jump e a concatenação dos 26 bits do
campo de endereço da instrução (multiplicado por
4), com os 4 bits superiores de PC

Você também pode gostar