MIPS
ENGENHARIA DE COMPUTAO
UNIVERSIDADE SAGRADO CORAO
PROF. M. ENG. ELAINE CECLIA GATTO
1. INTRODUO
Instrues:
So
Conjunto de instrues:
1. INTRODUO
AFIRMAO:
Todo
Exemplo:
add a, b, c
Essa
MIPS:
Conjunto
Cada
Precisa
de instrues
Exemplo:
Somar
B, C, D, E;
Armazenar
o resultado em A
Soluo:
add a, b, c
add a, a, d
add a, a, e
ADIO:
Sempre
Dois
Um
PERGUNTA:
Porque
RESPOSTA:
Objetivo:
Realizar
Realizar
simples
DE PROJETO
Instruo
Exemplo
Significado
Comentrio
Add a, b, c
A=b+c
Trs operandos
Sub a, b, c
A=b-c
Trs operandos
EXEMPLO
Dado
SOLUO:
add a, b, c
sub d, a, e
EXERCCIOS
Dado
SOLUO:
??????
EXEMPLO
Dado
SOLUO:
add t0, g, h
add t1, i, j
Sub f, t0, t1
EXPLICANDO:
F
= t0 t1
t0
=g+h
t1
=i+j
t0
EXERCCIOS
Dado
SOLUO:
????
Importante:
Operandos
No
Soluo:
Uso
PERGUNTA:
O
RESPOSTA:
So
Registradores do MIPS
Tamanho
da palavra: 32 bits
Quantidade
de registradores: 32
PERGUNTA:
Qual
RESPOSTA:
RESTRIO:
PRNCIPIOS DE PROJETO
2.
nmero
de
QUESTIONE-SE:
31
regra no absoluta!!!
Objetivo do projetista:
Manter
Questionar-se:
Preciso
fundamental
para
bom
$s1, etc.
$t0,
$t1, etc.
EXEMPLO:
Dada
f = ( g + h ) ( i + j );
RESPOSTA:
O
Cdigo em MIPS:
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1
ENTENDERAM???????
EXERCCIOS:
Dada
RESPOSTA:
???
Apenas
Concluindo,
IMPORTANTE:
Operaes
Endereo
= ndice
LOAD:
IMPORTANTE:
Uma
O
Portanto,
O
EXEMPLO:
Traduza
g = h + a[8];
SOLUO:
G
CLCULO DO ENDEREO:
Onde
Endereo
Portanto:
Portanto:
lw = $t0, 8 ( $s3)
add $s1, $s2, $t0
EXERCCIOS:
Traduza
w = x + y[4];
SOLUO
??????
IMPORTANTE:
DESLOCAMENTO:
REGISTRADOR-BASE:
3.A INTERFACE
HARDWARE/SOFTWARE
Compilador MIPS
Associa
variveis a registradores
Aloca
Aloca
Coloca
3.A INTERFACE
HARDWARE/SOFTWARE
RESTRIO DE ALINHAMENTO:
As
Porque ocorre?
Quase
bytes)
O
3.A INTERFACE
HARDWARE/SOFTWARE
Big endian:
Little endian
uma mquina que enderea bytes e usa o byte mais direita para
representar o endereo da palavra
3.A INTERFACE
HARDWARE/SOFTWARE
de armazenamento
Transfere
Formato:
Nome
Endereo do MIPS:
Constante
+ contedo do registrador
EXEMPLO:
Dado
a[12] = h + a[8];
SOLUO:
Uma
Dois
SOLUO COMPLETA:
lw $t0, 32($s3)
add $to, $s2, St0
Sw $to, 48($s3)
DESLOCAMENTOS:
32
pois 4 * 8
48
pois 4 * 12
EXEMPLO:
Dado
z[16] = y + z[12];
SOLUO:
??????
EXEMPLO:
SOLUO:
Instruo
Instruo
1 passo:
+ i = 2i
2i
+ 2i = 4i
Em seguida, obter o
endereo
de
a[i]
somando
$t1
ao
endereo-base de a,
armazenado em #s3
add $t1, $t1, $s3
#a[i] = (4*i+$s3)
2 passo:
Agora somar:
add $s1, $s2, $t0 #g=h+a[i]
g = h + a[i];
Cdigo completo:
add $t1, $s4, $s4
#2*i
#4*i
#a[i]=(4*i+$s3)
lw $t0,0($t1)
#$t0=a[i]
#g=h+a[i]
EXEMPLO:
SOLUO:
????
3.B INTERFACE
HARDWARE/SOTWARE
SPILLING
DERRAMAMENTO
DE REGISTRADORES:
3.B INTERFACE
HARDWARE/SOTWARE
3.B INTERFACE
HARDWARE/SOTWARE
dois registradores
Opera
dados lidos
Escreve
o resultado da operao
3.B INTERFACE
HARDWARE/SOTWARE
um operando
Escreve
No
um operando
3.B INTERFACE
HARDWARE/SOTWARE
um operando
Escreve
No
um operando
Exemplo
$s0, $s1
Comentrios
Posies de acesso rpido para armazenamento de dados.
Os dados devem estar em registradores para que as
operaes aritmticas possam ser relizadas.
Instru
o
Exemplo
add
Significado
Comentrio
Trs operandos
Dados em registradores
subtract
Trs operandos
Dados em registradores
load word
lw $s1,
100($s2)
$s1 = Memria[$s2 +
100]
Memria Registrador
store
word
sw $s1,
100($s2)
Memria[$s2 + 100] =
$s1
Registrador Memria
Aritmtica
Transfernci
a de dados
REGISTRADOR-NDICE:
Outro
Objetivo:
O
4. REPRESENTAO DE INSTRUES
$s7 = 16 a 23
$t0
a $t7 = 8 a 15
EXEMPLO:
Dada
SOLUO:
0
17
18
32
CAMPO 1
CAMPO 2
CAMPO 3
CAMPO 4
CAMPO 5
CAMPO 6
add
$s1
$s2
$t0
add
Campo 1 e Campo 6:
Campo 2:
Campo 4:
Campo 3:
Campo 5:
17
18
32
CAMPO 1
CAMPO 2
CAMPO 3
CAMPO 4
CAMPO 5
CAMPO 6
Tipo de
instruo
Operando-fonte 1
Operando-fonte 2
Resultado
da soma
No utilizado
Tipo de
instruo
add
$s1
$s2
$t0
add
Linguagem de
Mquina
17
18
32
Cdigo de
Mquina
000000
10001
10010
01000
00000
100000
32 bits
6 bits
5 bits
5 bits
5 bits
5 bits
6 bits
add
$s1
$s2
$t0
add
instruo
rs
Operao
bsica
OpCode
Cdigo da
Operao
6 bits
rt
shamt
Funct
Deslocamento
de bits
Cdigo de
funo Funo.
Variao da
operao
5 bits
5 bits
6 bits
5 bits
rd
5 bits
Problema: manter todas as instrues do mesmo tamanho e de ter um nico formato de instruo
Princpio de projeto 3: Um bom projeto demanda compromisso!
No MIPS toda as instrues tem o mesmo tamanho (em bits), mas permite formatos diferentes!
op
rs
rt
Endereo
6
bits
5 bits
5 bits
16 bits
Registrador Registrador
base
destino
pois
instruo
usa
Exemplo:
g
= h + A[8];
lw
op
rs
rt
Endereo
lw
$s3
$t0
32
35
19
32
5 bits
16 bits
6 bits 5
bits
Formato
op
rs
rt
rd
shamt
funct
Endere
o
add
Reg
Reg
Reg
32
no
existe
sub
Reg
Reg
Reg
34
no
existe
no
existe
no
existe
no
existe
Endereo
no
existe
no
existe
no
existe
Endereo
lw
I
35
Reg
Reg
REG = o nmero de um registrador entre 0 e 31
sw
I
43
Reg
Reg
ENDEREO = um valor de 16 bits
ADD e SUB tem o mesmo valor no cdigo da operao. O hardware sabe a diferena pelo
campo FUNCT, que no igual para os dois. 0 o cdigo para operao aritmtica.
rs
rt
rd
Shamt/endereo
funct
lw
($t1)
$t0
1200
35
1200
100011
01001
01000
add
$s2
$t0
$t0
18
32
000000
10010
01000
01000
00000
100000
sw
($t1)
$t0
1200
43
1200
101011
01001
01000
Formato
add
18
19
17
32
sub
18
19
17
34
lw
35
18
17
100
lw $s1, 100($s2)
sw
43
18
17
100
Sw $s1, 100($s2)
6 bits
5 bits
5 bits
5 bits
5 bits
6 bits
Todas as instrues do
MIPS tem 32 bits
rd
shamt
funct
Tamanho
do campo
Exemplo
Formato
R
op
rs
rt
Formato I
op
rs
rt
Comentrios
endereo
Os