SlideShare a Scribd company logo
1 of 68
Conjunto de Instruções
MIPS
ENGENHARIA DE COMPUTAÇÃO
UNIVERSIDADE SAGRADO CORAÇÃO
PROF.ª M.ª ENG.ª ELAINE CECÍLIA GATTO
1. INTRODUÇÃO
 Instruções:
 São as palavras da linguagem de máquina
 Conjunto de instruções:
 É o vocabulário da linguagem de máquina
 Todo processador é construído com base nos mesmos princípios
fundamentais, mesmas tecnologias de hardware e realiza as mesmas
operações básicas.
1. INTRODUÇÃO
 Objetivo no projeto de construção de microprocessadores:
 Encontrar um conjunto de instruções que facilite tanto a construção
do hardware quanto a do compilador e, ao mesmo tempo, maximize
a performance e minimize os custos
2. OPERAÇÕES EXECUTADAS PELO
HARDWARE DA MÁQUINA
 AFIRMAÇÃO:
 Todo processador deve ser capaz de executar instruções aritméticas
 Exemplo:
add a, b, c
 Essa instrução representa a soma de B com C, armazenando o
resultado em A.
2. OPERAÇÕES EXECUTADAS PELO
HARDWARE DA MÁQUINA
 MIPS:
 Conjunto de instruções
 Cada instrução aritmética executa apenas uma operação
 Precisa sempre referenciar exatamente três variáveis
 Exemplo:
 Somar B, C, D, E;
 Armazenar o resultado em A
2. OPERAÇÕES EXECUTADAS PELO
HARDWARE DA MÁQUINA
 Solução:
add a, b, c
add a, a, d
add a, a, e
 Na primeira linha soma-se B com C e o resultado é armazenado em A
 Na segunda linha soma-se o resultado que foi armazenado em A com o
valor de D
 Na terceira linha soma-se o resultado armazenado em A com o valor de
E
2. OPERAÇÕES EXECUTADAS PELO
HARDWARE DA MÁQUINA
 Para realizar a soma de quatro valores, foi necessário três instruções
 Na linguagem de montagem MIPS, usa-se # para fazer comentários e
não ponto e vírgula como na linguagem X86 no debug
 Em MIPS cada linha da linguagem pode conter apenas uma instrução
 ADIÇÃO:
 Sempre possuirá três operandos
 Dois números a serem somados (origem)
 Um local de armazenamento (destino)
2. OPERAÇÕES EXECUTADAS PELO
HARDWARE DA MÁQUINA
 PERGUNTA:
 Porque três operandos? Porque não dois operandos como no x86? Ou
porque não instruções com tamanhos de operandos variados?
 RESPOSTA:
 Objetivo: manter o hardware tão simples quanto possível
 Realizar operações aritméticas com um número variável de operandos
é mais complexo
 Realizar operações aritméticas com um número fixo de operandos é
mais simples
 RECORDAR: RISC X CISC
2. OPERAÇÕES EXECUTADAS PELO
HARDWARE DA MÁQUINA
 PRINCÍPIOS DE PROJETO
1. A simplicidade é favorecida pela regularidade
Categoria Instrução Exemplo Significado Comentário
Aritmética Add (soma) Add a, b, c A = b + c Três operandos
Subtract (subração Sub a, b, c A = b - c Três operandos
TABELA 1: ARQUITETURA DO MIPS
2.1. COMPILAÇÃO DE DOIS COMANDOS DE ATRIBUIÇÃO
EM C PARA LINGUAGEM DE MONTAGEM MIPS
 EXEMPLO
 Dado o seguinte código em linguagem de alto nível (linguagem C).
Traduza-o para linguagem de máquina MIPS.
a = b + c;
d = a – e;
 SOLUÇÃO:
add a, b, c
sub d, a, e
2.1. COMPILAÇÃO DE DOIS COMANDOS DE ATRIBUIÇÃO
EM C PARA LINGUAGEM DE MONTAGEM MIPS
 EXERCÍCIOS
 Dado o seguinte código em linguagem de alto nível (linguagem C).
Traduza-o para linguagem de máquina MIPS.
y = x + w;
z = k – l;
 SOLUÇÃO:
??????
 EXEMPLO
 Dado o seguinte código em linguagem de alto nível (linguagem C).
Traduza-o para linguagem de máquina MIPS.
f = (g + h) – (i + j);
 SOLUÇÃO:
add t0, g, h
add t1, i, j
Sub f, t0, t1
2.2 COMPILAÇÃO DE UMA DECLARAÇÃO C COMPLEXA
 EXPLICANDO:
 F = (g + h) – (i + j) é o mesmo que (foi quebrado em duas partes)
 F = t0 – t1
 t0 = g + h
 t1 = i + j
 t0 e t1 são variáveis temporárias, normalmente, são espaços livres de
algum registrador de uso geral
2.2 COMPILAÇÃO DE UMA DECLARAÇÃO C COMPLEXA
 EXERCÍCIOS
 Dado o seguinte código em linguagem de alto nível (linguagem C).
Traduza-o para linguagem de máquina MIPS.
w = (y - l) + (z - k);
 SOLUÇÃO:
????
2.2 COMPILAÇÃO DE UMA DECLARAÇÃO C COMPLEXA
3. OPERANDOS DE HARDWARE DE MÁQUINA
 Importante:
 Operandos de instruções aritméticas não podem ser variáveis
 Não há suporte em hardware para esta implementação
 Solução:
 Uso de REGISTRADORES (conjunto especial de localidades de
memória)
 PERGUNTA:
 O que são registradores de acordo com os autores?
 RESPOSTA:
São as primiticas do projeto de hardware que permanecem visíveis
ao programador quando o projeto se torna operacional
3. OPERANDOS DE HARDWARE DE MÁQUINA
 Registradores do MIPS
 Tamanho da palavra: 32 bits
 Quantidade de registradores: 32
 PERGUNTA:
 Qual a principal diferença entre as vari´veis de uma linguagem de alto
nível e os registradores?
 RESPOSTA:
 É a quantidade limitada destes últimos
3. OPERANDOS DE HARDWARE DE MÁQUINA
 RESTRIÇÃO:
 Os três operandos das instruções aritméticas do MIPS precisam ser
escolhidos de um dos 32 registradores de 32 bits
 PRÍNCIPIOS DE PROJETO
 2. Quanto menor, mais rápido
 A máquina tornar-se mais lenta com um grande número de registradores
no hardware, pois aumenta o ciclo do clock
3. OPERANDOS DE HARDWARE DE MÁQUINA
 QUESTIONE-SE:
 31 registradores fazem a máquina funcionar mais rápido que 32?
 “menor é mais rápido”:
 Até que ponto isso é verdadeiro?
 A regra não é absoluta!!!
3. OPERANDOS DE HARDWARE DE MÁQUINA
 Objetivo do projetista:
 Manter o clock do hardware tão pequeno quanto possível
 Questionar-se:
 Preciso que os meus programas tenhm mais registradores disponíveis?
 O uso correto dos registradores é fundamental para o bom desempenho
da máquina
3. OPERANDOS DE HARDWARE DE MÁQUINA
 COMO REFERENCIAR UM REGISTRADOR NO MIPS:
 Usar um $ seguido de dois caracteres
 0 a 31 registradores (32 no total)
 EXEMPLO (registradores temporários)
 $s0, $s1, etc.
 $t0, $t1, etc.
3. OPERANDOS DE HARDWARE DE MÁQUINA
3.1. COMPILAÇÃO DE UM COMANDO DE
ATRIBUIÇÃO EM C USANDO REGISTRADORES
 EXEMPLO:
 Dada a linha de código em linguagem C abaixo, qual o código em
linguagem de montagem MIPS?
f = ( g + h ) – ( i + j );
 RESPOSTA:
 O compilador deve fazer a associação das variáveis de um programa
com os registradores do hardware!!!!!
 F = $s0, G = $s1, H = $s2, I = $s3, J = $s4
 Código em MIPS:
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1
 ENTENDERAM???????
3.1. COMPILAÇÃO DE UM COMANDO DE
ATRIBUIÇÃO EM C USANDO REGISTRADORES
 EXERCÍCIOS:
 Dada a linha de código em linguagem C abaixo, qual o código em
linguagem de montagem MIPS?
w = (y - l) + (z - k);
 RESPOSTA:
 ???
3.1. COMPILAÇÃO DE UM COMANDO DE
ATRIBUIÇÃO EM C USANDO REGISTRADORES
 Como tratar estruturas de dados?
 Estruturas de Dados podem conter muito mais elementos do que
registradores disponíveis no hardware da máquina
 Apenas um pequeno número de dados pode ser mantido pelo
processador em seus registradores
 A memória do computador, no entanto, pode conter milhões de
dados
 Concluindo, estruturas de dados são armazenadas na memória e não
nos registradores.
3. OPERANDOS DE HARDWARE DE MÁQUINA
 IMPORTANTE:
 Operações aritméticas ocorrem somente entre valores armazenados
em registradores e refrenciados pelas instruções do MIPS
 É necessário que haja instruções de transferência de dados entre a
memória e os registradores
 Como fazer para acessar uma palavra na memória?
 A instrução de transferência de dados deve fornecer o endereço na
memória da palavra a ser acessada
 Endereço = índice
3. OPERANDOS DE HARDWARE DE MÁQUINA
 LOAD:
 É a instrução de transferência de dados que move um dado da
memória para um registrador
 Formato da instrução LOAD (lw = load word):
 Nome da operação + registrador a ser carregado + constante
associada a outro registrador (endereçamento da memória)
 Cálculo do endereço da memória:
 Constante + conteúdo do registrador associado a ela
3. OPERANDOS DE HARDWARE DE MÁQUINA
 IMPORTANTE:
 Uma instrução LW faz uma cópia do dado da memória
 O dado continua armzenado na memória
 Portanto, não é feito uma transferencia definitiva
 O primeiro índice do array é zero
3. OPERANDOS DE HARDWARE DE MÁQUINA
3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM
UM OPERANDO NA MEMÓRIA
 EXEMPLO:
 Traduza o comando de atribuição abaixo, escrito em C, para a
linguagem de montagem do MIPS, em que A é um array de 100
palavras.
g = h + a[8];
 SOLUÇÃO:
 G = $s1, H = $s2; $s3 = endereço-base (endereço inicial do array)
 Há uma única operação no trecho de código em C, que é a soma!
 Um dos operandos da operação está na memória (no caso, o array)
 O operando da memória deve ser transferido (copiado) para um
registrador (A[8])
3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM
UM OPERANDO NA MEMÓRIA
 CÁLCULO DO ENDEREÇO:
 Onde está, na memória, o elemento do array que preciso transferir?
 Endereço na memória = endereço-base + índice
 O valor resultante do cálculo também deve ser guardado em um
registrador temporário para uso posterior
 Portanto:
lw = $t0, 8 ( $s3) #O registrador temporário $t0
recebe a[8]
3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM
UM OPERANDO NA MEMÓRIA
 Agora, o valor de a[8] já está em um registrador temporário para
manipulação ($t0)
 O que precisamos fazer agora? Somar o valor de h com o valor que está
em a[8]
 Portanto:
add $s1, $s2, $t0 # g recebe h + a[8]
3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM
UM OPERANDO NA MEMÓRIA
g = h + a[8];
É o mesmo que:
lw = $t0, 8 ( $s3)
add $s1, $s2, $t0
3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM
UM OPERANDO NA MEMÓRIA
 EXERCÍCIOS:
 Traduza o comando de atribuição abaixo, escrito em C, para a
linguagem de montagem do MIPS, em que A é um array de 100
palavras.
w = x + y[4];
 SOLUÇÃO
 ??????
3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM
UM OPERANDO NA MEMÓRIA
 IMPORTANTE:
 DESLOCAMENTO:
 É a constante que aparece na instrução de transferência de dados
 REGISTRADOR-BASE:
 É o registrador cujo valor armazenado é somado a esta constante
3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM
UM OPERANDO NA MEMÓRIA
3.A – INTERFACE HARDWARE/SOFTWARE
 Compilador MIPS
 Associa variáveis a registradores
 Aloca em endereços de memória determinadas estruturas de dados
como os arrays
 Aloca espaço de memória para programas e dados
 Coloca o endereço inicial nas instruções de transferência de dados
 RESTRIÇÃO DE ALINHAMENTO:
 As palavras precisam sempre começar em endereços que sejam
múltiplos de 4
 Porque ocorre?
 Quase todas as arquiteturas endereçam bytes individuais (8 bits ou
bytes)
 O endereço de uma palavra deve ser igual ao endereço de um dos
bytes componentes da palavra
 O endereço de duas palavras sequencias difere sempre de 4 unidades
3.A – INTERFACE HARDWARE/SOFTWARE
 Big endian:
 É uma máquina que endereça bytes e usa o byte mais à esquerda
para representar o endereço da palavra
 Little endian
 É uma máquina que endereça bytes e usa o byte mais à direita para
representar o endereço da palavra
3.A – INTERFACE HARDWARE/SOFTWARE
 O endereçamento de bytes afeta a indexação dos arrays
 O deslocamento a ser adicionado ao conteúdo do registrador-base
deve ser 4 x Y, de modo que o elemento do array selecionado pela
instrução load seja a[Y] e não a[Y/4]
3.A – INTERFACE HARDWARE/SOFTWARE
 STORE (sw = store word):
 Instrução de armazenamento
 Transfere um dado de um registrador para a memória
 Formato:
 Nome da operação + registrador + deslocamento + registrador-base
 Endereço do MIPS:
 Constante + conteúdo do registrador
3. OPERANDOS DE HARDWARE DE MÁQUINA
3.3. COMPILAÇÃO USANDO
INSTRUÇÕES DE LOAD E STORE
 EXEMPLO:
 Dado o trecho de código em linguagem C abaixo, qual é o código de
montagem em linguagem MIPS?
a[12] = h + a[8];
 SOLUÇÃO:
 Uma única operação (soma)
 Dois operandos na memória (a[12] e a[8])
3.3. COMPILAÇÃO USANDO
INSTRUÇÕES DE LOAD E STORE
 REFORÇANDO: MIPS endereça byte
 SOLUÇÃO COMPLETA:
lw $t0, 32($s3)
add $to, $s2, St0
Sw $to, 48($s3)
 DESLOCAMENTOS:
 32 pois 4 * 8
 48 pois 4 * 12
Os arrays muitas vezes
são acessados com
variáveis em vez de
constantes!!!!
O elemento do array
pode mudar durante a
execução do programa
3.3. COMPILAÇÃO USANDO
INSTRUÇÕES DE LOAD E STORE
 EXEMPLO:
 Dado o trecho de código em linguagem C abaixo, qual é o código de
montagem em linguagem MIPS?
z[16] = y + z[12];
 SOLUÇÃO:
 ??????
3.4. COMPILAÇÃO USANDO UMA
VARIÁVEL PARA INDEXAR O ARRAY
 EXEMPLO:
 Dado o trecho de código em linguagem C abaixo, qual o código MIPS
correspondente?
g = h + a[i];
 SOLUÇÃO:
 Instrução com uma operação (soma)
 Instrução com uma transferência da memória
3.4. COMPILAÇÃO USANDO UMA
VARIÁVEL PARA INDEXAR O ARRAY
 1º passo:
 Calcular o endereço de a[i], para isto:
 Multiplicar o valor do índice i por 4 (i *4)
 Fazer a multiplicação (i * 4) usando somas:
i + i = 2i
2i + 2i = 4i
add $t1, $s4, $s4 #2*i
add $t1, $t1, $t1 #4*i
Em seguida, obter o
endereço de a[i]
somando $t1 ao
endereço-base de a,
armazenado em #s3
add $t1, $t1, $s3
#a[i] = (4*i+$s3)
3.4. COMPILAÇÃO USANDO UMA
VARIÁVEL PARA INDEXAR O ARRAY
 2º passo:
 Usar o endereço calculado para carregar a[i] em um registrador
lw $t0,0($t1) #$t0=a[i]
 Agora somar:
add $s1, $s2, $t0 #g=h+a[i]
3.4. COMPILAÇÃO USANDO UMA
VARIÁVEL PARA INDEXAR O ARRAY
 g = h + a[i];
 Código completo:
add $t1, $s4, $s4 #2*i
add $t1, $t1, $t1 #4*i
add $t1, $t1, $s3 #a[i]=(4*i+$s3)
lw $t0,0($t1) #$t0=a[i]
add $s1, $s2, $t0 #g=h+a[i]
3.4. COMPILAÇÃO USANDO UMA
VARIÁVEL PARA INDEXAR O ARRAY
 EXEMPLO:
 Dado o trecho de código em linguagem C abaixo, qual o código MIPS
correspondente?
y = x + w[i];
 SOLUÇÃO:
 ????
3.B – INTERFACE HARDWARE/SOTWARE
 São mantidas nos registradores apenas as variáveis usadas com mais
frequencia
 As demais são colocadas na memória
 SPILLING
 DERRAMAMENTO DE REGISTRADORES:
 É o processo de colocar na memória as variáveis menos usadas
 Usa-se instruções de load/store para transferência M<-->R
3.B – INTERFACE HARDWARE/SOTWARE
 O acesso à memória é mais lento que o acesso à registradores
 Isto porque a quantidade de registradores é menor que os endereços de
memória
 Portanto, o acesso aos registradores é muito mais rápido que o acesso à
memória
3.B – INTERFACE HARDWARE/SOTWARE
 INSTRUÇÃO ARITMÉTICA DO MIPS:
 Le dois registradores
 Opera dados lidos
 Escreve o resultado da operação
3.B – INTERFACE HARDWARE/SOTWARE
 INSTRUÇÃO DE TRANSFERÊNCIA DO MIPS:
 Le um operando
 Escreve um operando
 Não efetua quaisquer operação
 INSTRUÇÃO DE TRANSFERÊNCIA DO MIPS:
 Le um operando
 Escreve um operando
 Não efetua quaisquer operação
3.B – INTERFACE HARDWARE/SOTWARE
Nome Exemplo Comentários
32 registradores $s0, $s1
 Posições de acesso rápido para armazenamento de dados.
 Os dados devem estar em registradores para que as
operações aritméticas possam ser relizadas.
230 palavras de memória
Memória[0]
Memória[4]
 Estas posições só são acessadas por instruções de
transferência de dados.
 Endereça bytes
 Os endereços de palavras consecutivas diferem de 4
unidades.
3. OPERANDOS DE HARDWARE DE MÁQUINA
TABELA 2: OPERANDOS DO MIPS
3. OPERANDOS DE HARDWARE DE MÁQUINA
Categoria Instrução Exemplo Significado Comentário
Aritmética
add add $s1, $s2, $s3 $s1 = $s2 + $s3
Três operandos
Dados em registradores
subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3
Três operandos
Dados em registradores
Transferência
de dados
load word lw $s1, 100($s2) $s1 = Memória[$s2 + 100]
Memória  Registrador
store word sw $s1, 100($s2) Memória[$s2 + 100] = $s1
Registrador  Memória
TABELA 3: Arquitetura do MIPS
3. OPERANDOS DE HARDWARE DE MÁQUINA
 REGISTRADOR-ÍNDICE:
 Outro nome para o registrador-base
 Objetivo:
O registrador nas instruções de transferência de dados foi inventado
com o objetivo de guardar o índice de um array, com o
deslocamento marcando o endereço inicial de tal array
4. REPRESENTAÇÃO DE INSTRUÇÕES
 Mapeamento dos nomes dos registradores em números:
 $s0 à $s7 = 16 a 23
 $t0 a $t7 = 8 a 15
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE
MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA
 EXEMPLO:
 Dada a instrução MIPS abaixo, converta-a para uma instrução de
máquina
add $t0, $s1, $s2
 SOLUÇÃO:
0 17 18 8 0 32
CAMPO 1 CAMPO 2 CAMPO 3 CAMPO 4 CAMPO 5 CAMPO 6
add $s1 $s2 $t0 0 add
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE
MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA
 Campo 1 e Campo 6:
 Informam ao MIPS que esta instrução é uma adição
 Campo 2:
 Informa o número do registrador do primeiro operando-fonte
 Campo 3:
 Informa o segundo operando-fonte
 Campo 4:
 Contém o número do registrador que armazenará o resultado
 Campo 5:
 Não é utilizado nesta instrução, portanto, seu valor é zero.
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE
MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA
Linguagem de
Máquina
0 17 18 8 0 32
Código de Máquina 000000 10001 10010 01000 00000 100000
32 bits 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
instrução add $s1 $s2 $t0 0 add
0 17 18 8 0 32
CAMPO 1 CAMPO 2 CAMPO 3 CAMPO 4 CAMPO 5 CAMPO 6
Tipo de
instrução
Operando-fonte 1 Operando-fonte 2 Resultado
da soma
Não utilizado Tipo de
instrução
add $s1 $s2 $t0 0 add
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA
LINGUAGEM DE MONTAGEM DO MIPS PARA
UMA INSTRUÇÃO DE MÁQUINA
op rs rt rd shamt Funct
Operação
básica –
OpCode –
Código da
Operação
Operando
fonte
(registrador)
Operando
fonte
(registrador)
Registrador
destino
(armazena o
resultado da
operação)
Deslocamento
de bits
Código de
função Função.
Variação da
operação
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
Problema: manter todas as instruções do mesmo tamanho e de ter um único formato de instrução
Princípio de projeto 3: Um bom projeto demanda compromisso!
No MIPS toda as instruções tem o mesmo tamanho (em bits), mas permite formatos diferentes!
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA
LINGUAGEM DE MONTAGEM DO MIPS PARA
UMA INSTRUÇÃO DE MÁQUINA
 Formato R-TYPE ou formato R-FORMAT, pois a instrução usa registradores
(exemplo dos slides anteriores)
 Formato I-TYPE ou I-FORMAT usado na representação de instruções de
transferência de dados
op rs rt Endereço
6 bits 5 bits 5 bits 16 bits
Registrador
base
Registrador
destino
Uma instrução de load word pode carregar qualquer palavra
dentro da faixa entre o endereço constante no registrador base
(rs) acrescido ou decrescido de 32.768 bytes (ou 8.192 palavras)
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA
LINGUAGEM DE MONTAGEM DO MIPS PARA
UMA INSTRUÇÃO DE MÁQUINA
 Exemplo:
 g = h + A[8];
 lw $t0, 32($s3) #Registrador temporário recebe a[8]
 A distinção entre os formatos de instruções no MIPS se dá pelo valor do primeiro
campo
op rs rt Endereço
lw $s3 $t0 32
35 19 8 32
6 bits 5 bits 5 bits 16 bits
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA
LINGUAGEM DE MONTAGEM DO MIPS PARA
UMA INSTRUÇÃO DE MÁQUINA
Instrução Formato op rs rt rd shamt funct Endereço
add R 0 Reg Reg Reg 0 32 não existe
sub R 0 Reg Reg Reg 0 34 não existe
lw I 35 Reg Reg não existe não existe não existe Endereço
sw I 43 Reg Reg não existe não existe não existe Endereço
REG = é o número de um registrador entre 0 e 31
ENDEREÇO = é um valor de 16 bits
ADD e SUB tem o mesmo valor no código da operação. O hardware sabe a diferença pelo
campo FUNCT, que não é igual para os dois. 0 é o código para operação aritmética.
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA
LINGUAGEM DE MONTAGEM DO MIPS PARA
UMA INSTRUÇÃO DE MÁQUINA
 Exemplo: Dado o código em linguagem de alto nível A[300] = h +
A[300], converta-o para código MIPS, faça a representação de
linguagem de máquina e de código de máquina.
lw $t0, 1200 ($t1)
add $t0, $s2, $t0
sw $to, 1200($t1)
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA
LINGUAGEM DE MONTAGEM DO MIPS PARA
UMA INSTRUÇÃO DE MÁQUINA
op rs rt rd Shamt/endereço funct
lw ($t1) $t0 1200
35 9 8 1200
100011 01001 01000 0000 0100 1011 0000
add $s2 $t0 $t0
0 18 8 8 0 32
000000 10010 01000 01000 00000 100000
sw ($t1) $t0 1200
43 9 8 1200
101011 01001 01000 0000 0100 1011 0000
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE
MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA
Nome Formato Exemplo Comentários
add R 0 18 19 17 0 32 add $s1, $s2, $s3
sub R 0 18 19 17 0 34 sub $s1, $s2, $s3
lw I 35 18 17 100 lw $s1, 100($s2)
sw I 43 18 17 100 Sw $s1, 100($s2)
Tamanho
do
campo
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
Todas as instruções do MIPS
tem 32 bits
Formato R R op rs rt rd shamt funct
Formato das instruções
aritméticas
Formato I I op rs rt endereço
Formato das instruções de
transferência de dados
4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE
MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA
 A construção de computadores hoje deve obedecer a dois princípios:
 As instruções são representadas em forma de número
 Os programas devem ser armazenados na memória antes de serem
executados
 CONCEITO DE PROGRAMA ARMAZENADO

More Related Content

What's hot

Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Leinylson Fontinele
 
Barramento
BarramentoBarramento
Barramentowendhel
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisvini_campos
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugolGabriel Faustino
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Gercélia Ramos
 
Redes 6 equipamentos ativos da rede
Redes 6 equipamentos ativos da redeRedes 6 equipamentos ativos da rede
Redes 6 equipamentos ativos da redeMauro Pereira
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadoresDaniel Moura
 
ApresentaçãO Tipos De Memorias
ApresentaçãO  Tipos De MemoriasApresentaçãO  Tipos De Memorias
ApresentaçãO Tipos De Memoriasecompo
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processosComputação Depressão
 
Trabalho sobre processadores
Trabalho sobre processadoresTrabalho sobre processadores
Trabalho sobre processadoresTiago
 
Manutenção e montagem de computadores
Manutenção e montagem de computadoresManutenção e montagem de computadores
Manutenção e montagem de computadoresJoka Luiz
 
Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmosAdilio Tavares
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisAbnel Junior
 

What's hot (20)

Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)
 
Barramento
BarramentoBarramento
Barramento
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugol
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Projeto de redes
Projeto de redesProjeto de redes
Projeto de redes
 
Redes 6 equipamentos ativos da rede
Redes 6 equipamentos ativos da redeRedes 6 equipamentos ativos da rede
Redes 6 equipamentos ativos da rede
 
Modelo osi
Modelo osiModelo osi
Modelo osi
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadores
 
Informática Básica - Aula 03 - Hardware
Informática Básica - Aula 03 - HardwareInformática Básica - Aula 03 - Hardware
Informática Básica - Aula 03 - Hardware
 
Arquitetura de Redes de Computadores
 Arquitetura de Redes de Computadores Arquitetura de Redes de Computadores
Arquitetura de Redes de Computadores
 
ApresentaçãO Tipos De Memorias
ApresentaçãO  Tipos De MemoriasApresentaçãO  Tipos De Memorias
ApresentaçãO Tipos De Memorias
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos
 
Topologia de Redes
Topologia de RedesTopologia de Redes
Topologia de Redes
 
Trabalho sobre processadores
Trabalho sobre processadoresTrabalho sobre processadores
Trabalho sobre processadores
 
Modelo de von neumann
Modelo de von neumannModelo de von neumann
Modelo de von neumann
 
Manutenção e montagem de computadores
Manutenção e montagem de computadoresManutenção e montagem de computadores
Manutenção e montagem de computadores
 
Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmos
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Endereçamento de memória
Endereçamento de memóriaEndereçamento de memória
Endereçamento de memória
 

Viewers also liked

Conjunto de instruções mips - instruções de desvio
Conjunto de instruções mips - instruções de desvioConjunto de instruções mips - instruções de desvio
Conjunto de instruções mips - instruções de desvioElaine Cecília Gatto
 
Arquitetura de Computadores: Assembly
Arquitetura de Computadores: AssemblyArquitetura de Computadores: Assembly
Arquitetura de Computadores: AssemblyElaine Cecília Gatto
 
Aula 6 emu8086
Aula 6   emu8086Aula 6   emu8086
Aula 6 emu8086LCCIMETRO
 
03 mips assembly language
03 mips assembly language03 mips assembly language
03 mips assembly languageMuberra Duman
 
Farmacologia Clínica dos MIPS
Farmacologia Clínica dos MIPSFarmacologia Clínica dos MIPS
Farmacologia Clínica dos MIPSTiago Sampaio
 
Aula 2 programas e linguagens de programação
Aula 2   programas e linguagens de programaçãoAula 2   programas e linguagens de programação
Aula 2 programas e linguagens de programaçãoLCCIMETRO
 
Aula 1 apresentação - conteudo programático
Aula 1   apresentação - conteudo programáticoAula 1   apresentação - conteudo programático
Aula 1 apresentação - conteudo programáticoLCCIMETRO
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadoresLCCIMETRO
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginasMikeNandes
 
Aula 4 a linguagem assembly
Aula 4   a linguagem assemblyAula 4   a linguagem assembly
Aula 4 a linguagem assemblyLCCIMETRO
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)Márcio Rizzatto
 
Arquitetura de computadores – memórias
Arquitetura de computadores – memóriasArquitetura de computadores – memórias
Arquitetura de computadores – memóriasElaine Cecília Gatto
 
Aula 5 instrução mov
Aula 5   instrução movAula 5   instrução mov
Aula 5 instrução movLCCIMETRO
 
Sistemas de Numeração e Conversão de Bases
Sistemas de Numeração e Conversão de BasesSistemas de Numeração e Conversão de Bases
Sistemas de Numeração e Conversão de BasesLeandro Costa
 

Viewers also liked (20)

Conjunto de instruções mips - instruções de desvio
Conjunto de instruções mips - instruções de desvioConjunto de instruções mips - instruções de desvio
Conjunto de instruções mips - instruções de desvio
 
Assembly
AssemblyAssembly
Assembly
 
Arquitetura de Computadores: Assembly
Arquitetura de Computadores: AssemblyArquitetura de Computadores: Assembly
Arquitetura de Computadores: Assembly
 
Linguagem assembly
Linguagem assemblyLinguagem assembly
Linguagem assembly
 
MIPS 32 BITS
MIPS 32 BITSMIPS 32 BITS
MIPS 32 BITS
 
Aula 6 emu8086
Aula 6   emu8086Aula 6   emu8086
Aula 6 emu8086
 
Le02 asd
Le02 asdLe02 asd
Le02 asd
 
03 mips assembly language
03 mips assembly language03 mips assembly language
03 mips assembly language
 
Farmacologia Clínica dos MIPS
Farmacologia Clínica dos MIPSFarmacologia Clínica dos MIPS
Farmacologia Clínica dos MIPS
 
Aula 2 programas e linguagens de programação
Aula 2   programas e linguagens de programaçãoAula 2   programas e linguagens de programação
Aula 2 programas e linguagens de programação
 
Aula 1 apresentação - conteudo programático
Aula 1   apresentação - conteudo programáticoAula 1   apresentação - conteudo programático
Aula 1 apresentação - conteudo programático
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadores
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
Aula 4 a linguagem assembly
Aula 4   a linguagem assemblyAula 4   a linguagem assembly
Aula 4 a linguagem assembly
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)
 
Arquitetura de computadores – memórias
Arquitetura de computadores – memóriasArquitetura de computadores – memórias
Arquitetura de computadores – memórias
 
Aula 5 instrução mov
Aula 5   instrução movAula 5   instrução mov
Aula 5 instrução mov
 
Sistemas de Numeração e Conversão de Bases
Sistemas de Numeração e Conversão de BasesSistemas de Numeração e Conversão de Bases
Sistemas de Numeração e Conversão de Bases
 
SQL
SQLSQL
SQL
 
Clusters, o que é?
Clusters, o que é?Clusters, o que é?
Clusters, o que é?
 

Similar to Conjunto de instruções mips - introdução

A arquitetura básica de um computador
A arquitetura básica de um computadorA arquitetura básica de um computador
A arquitetura básica de um computadorredesinforma
 
Aula 7 conjunto de instrucoes
Aula 7   conjunto de instrucoesAula 7   conjunto de instrucoes
Aula 7 conjunto de instrucoesCratuscb
 
Prova 2012 2_p4_gabarito
Prova 2012 2_p4_gabaritoProva 2012 2_p4_gabarito
Prova 2012 2_p4_gabaritoAmélia Moreira
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresLuis Ferreira
 
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESwillian324163
 
Assembly PDFs Eduardo Cj como usar o assembly
Assembly PDFs Eduardo Cj como usar o assemblyAssembly PDFs Eduardo Cj como usar o assembly
Assembly PDFs Eduardo Cj como usar o assemblyEduardoChicoJooJoo
 
Principios da microprogramacao
Principios da microprogramacaoPrincipios da microprogramacao
Principios da microprogramacaoMarcelle Guiné
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Kratos879
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladoresAlyson Cavalcante
 
Processador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesProcessador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesCarlos Pereira
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaDeivid Martins
 
Sistemas logicos programaveis
Sistemas logicos programaveisSistemas logicos programaveis
Sistemas logicos programaveislaritha
 
Aspectos basicos de hardware e software
Aspectos basicos de hardware e softwareAspectos basicos de hardware e software
Aspectos basicos de hardware e softwareMarcelle Guiné
 

Similar to Conjunto de instruções mips - introdução (20)

Oc2 cap03
Oc2 cap03Oc2 cap03
Oc2 cap03
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
A arquitetura básica de um computador
A arquitetura básica de um computadorA arquitetura básica de um computador
A arquitetura básica de um computador
 
Aula 7 conjunto de instrucoes
Aula 7   conjunto de instrucoesAula 7   conjunto de instrucoes
Aula 7 conjunto de instrucoes
 
Prova 2012 2_p4_gabarito
Prova 2012 2_p4_gabaritoProva 2012 2_p4_gabarito
Prova 2012 2_p4_gabarito
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
 
Assembly PDFs Eduardo Cj como usar o assembly
Assembly PDFs Eduardo Cj como usar o assemblyAssembly PDFs Eduardo Cj como usar o assembly
Assembly PDFs Eduardo Cj como usar o assembly
 
Principios da microprogramacao
Principios da microprogramacaoPrincipios da microprogramacao
Principios da microprogramacao
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
 
Apostila c++ básico
Apostila c++ básicoApostila c++ básico
Apostila c++ básico
 
Apostila c++ básico (1)
Apostila c++ básico (1)Apostila c++ básico (1)
Apostila c++ básico (1)
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
 
Processador CISC RISC SET de instruções
Processador CISC RISC SET de instruçõesProcessador CISC RISC SET de instruções
Processador CISC RISC SET de instruções
 
Arq orgcom (1)
Arq orgcom (1)Arq orgcom (1)
Arq orgcom (1)
 
ArqOrgCom.ppt
ArqOrgCom.pptArqOrgCom.ppt
ArqOrgCom.ppt
 
aula_01.pdf
aula_01.pdfaula_01.pdf
aula_01.pdf
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e Distribuída
 
Sistemas logicos programaveis
Sistemas logicos programaveisSistemas logicos programaveis
Sistemas logicos programaveis
 
Aspectos basicos de hardware e software
Aspectos basicos de hardware e softwareAspectos basicos de hardware e software
Aspectos basicos de hardware e software
 

More from Elaine Cecília Gatto

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaElaine Cecília Gatto
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaElaine Cecília Gatto
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Elaine Cecília Gatto
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCElaine Cecília Gatto
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxElaine Cecília Gatto
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Elaine Cecília Gatto
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarElaine Cecília Gatto
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesElaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationElaine Cecília Gatto
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfElaine Cecília Gatto
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoElaine Cecília Gatto
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsElaine Cecília Gatto
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoElaine Cecília Gatto
 

More from Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Conjunto de instruções mips - introdução

  • 1. Conjunto de Instruções MIPS ENGENHARIA DE COMPUTAÇÃO UNIVERSIDADE SAGRADO CORAÇÃO PROF.ª M.ª ENG.ª ELAINE CECÍLIA GATTO
  • 2. 1. INTRODUÇÃO  Instruções:  São as palavras da linguagem de máquina  Conjunto de instruções:  É o vocabulário da linguagem de máquina  Todo processador é construído com base nos mesmos princípios fundamentais, mesmas tecnologias de hardware e realiza as mesmas operações básicas.
  • 3. 1. INTRODUÇÃO  Objetivo no projeto de construção de microprocessadores:  Encontrar um conjunto de instruções que facilite tanto a construção do hardware quanto a do compilador e, ao mesmo tempo, maximize a performance e minimize os custos
  • 4. 2. OPERAÇÕES EXECUTADAS PELO HARDWARE DA MÁQUINA  AFIRMAÇÃO:  Todo processador deve ser capaz de executar instruções aritméticas  Exemplo: add a, b, c  Essa instrução representa a soma de B com C, armazenando o resultado em A.
  • 5. 2. OPERAÇÕES EXECUTADAS PELO HARDWARE DA MÁQUINA  MIPS:  Conjunto de instruções  Cada instrução aritmética executa apenas uma operação  Precisa sempre referenciar exatamente três variáveis  Exemplo:  Somar B, C, D, E;  Armazenar o resultado em A
  • 6. 2. OPERAÇÕES EXECUTADAS PELO HARDWARE DA MÁQUINA  Solução: add a, b, c add a, a, d add a, a, e  Na primeira linha soma-se B com C e o resultado é armazenado em A  Na segunda linha soma-se o resultado que foi armazenado em A com o valor de D  Na terceira linha soma-se o resultado armazenado em A com o valor de E
  • 7. 2. OPERAÇÕES EXECUTADAS PELO HARDWARE DA MÁQUINA  Para realizar a soma de quatro valores, foi necessário três instruções  Na linguagem de montagem MIPS, usa-se # para fazer comentários e não ponto e vírgula como na linguagem X86 no debug  Em MIPS cada linha da linguagem pode conter apenas uma instrução  ADIÇÃO:  Sempre possuirá três operandos  Dois números a serem somados (origem)  Um local de armazenamento (destino)
  • 8. 2. OPERAÇÕES EXECUTADAS PELO HARDWARE DA MÁQUINA  PERGUNTA:  Porque três operandos? Porque não dois operandos como no x86? Ou porque não instruções com tamanhos de operandos variados?  RESPOSTA:  Objetivo: manter o hardware tão simples quanto possível  Realizar operações aritméticas com um número variável de operandos é mais complexo  Realizar operações aritméticas com um número fixo de operandos é mais simples  RECORDAR: RISC X CISC
  • 9. 2. OPERAÇÕES EXECUTADAS PELO HARDWARE DA MÁQUINA  PRINCÍPIOS DE PROJETO 1. A simplicidade é favorecida pela regularidade Categoria Instrução Exemplo Significado Comentário Aritmética Add (soma) Add a, b, c A = b + c Três operandos Subtract (subração Sub a, b, c A = b - c Três operandos TABELA 1: ARQUITETURA DO MIPS
  • 10. 2.1. COMPILAÇÃO DE DOIS COMANDOS DE ATRIBUIÇÃO EM C PARA LINGUAGEM DE MONTAGEM MIPS  EXEMPLO  Dado o seguinte código em linguagem de alto nível (linguagem C). Traduza-o para linguagem de máquina MIPS. a = b + c; d = a – e;  SOLUÇÃO: add a, b, c sub d, a, e
  • 11. 2.1. COMPILAÇÃO DE DOIS COMANDOS DE ATRIBUIÇÃO EM C PARA LINGUAGEM DE MONTAGEM MIPS  EXERCÍCIOS  Dado o seguinte código em linguagem de alto nível (linguagem C). Traduza-o para linguagem de máquina MIPS. y = x + w; z = k – l;  SOLUÇÃO: ??????
  • 12.  EXEMPLO  Dado o seguinte código em linguagem de alto nível (linguagem C). Traduza-o para linguagem de máquina MIPS. f = (g + h) – (i + j);  SOLUÇÃO: add t0, g, h add t1, i, j Sub f, t0, t1 2.2 COMPILAÇÃO DE UMA DECLARAÇÃO C COMPLEXA
  • 13.  EXPLICANDO:  F = (g + h) – (i + j) é o mesmo que (foi quebrado em duas partes)  F = t0 – t1  t0 = g + h  t1 = i + j  t0 e t1 são variáveis temporárias, normalmente, são espaços livres de algum registrador de uso geral 2.2 COMPILAÇÃO DE UMA DECLARAÇÃO C COMPLEXA
  • 14.  EXERCÍCIOS  Dado o seguinte código em linguagem de alto nível (linguagem C). Traduza-o para linguagem de máquina MIPS. w = (y - l) + (z - k);  SOLUÇÃO: ???? 2.2 COMPILAÇÃO DE UMA DECLARAÇÃO C COMPLEXA
  • 15. 3. OPERANDOS DE HARDWARE DE MÁQUINA  Importante:  Operandos de instruções aritméticas não podem ser variáveis  Não há suporte em hardware para esta implementação  Solução:  Uso de REGISTRADORES (conjunto especial de localidades de memória)
  • 16.  PERGUNTA:  O que são registradores de acordo com os autores?  RESPOSTA: São as primiticas do projeto de hardware que permanecem visíveis ao programador quando o projeto se torna operacional 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 17.  Registradores do MIPS  Tamanho da palavra: 32 bits  Quantidade de registradores: 32  PERGUNTA:  Qual a principal diferença entre as vari´veis de uma linguagem de alto nível e os registradores?  RESPOSTA:  É a quantidade limitada destes últimos 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 18.  RESTRIÇÃO:  Os três operandos das instruções aritméticas do MIPS precisam ser escolhidos de um dos 32 registradores de 32 bits  PRÍNCIPIOS DE PROJETO  2. Quanto menor, mais rápido  A máquina tornar-se mais lenta com um grande número de registradores no hardware, pois aumenta o ciclo do clock 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 19.  QUESTIONE-SE:  31 registradores fazem a máquina funcionar mais rápido que 32?  “menor é mais rápido”:  Até que ponto isso é verdadeiro?  A regra não é absoluta!!! 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 20.  Objetivo do projetista:  Manter o clock do hardware tão pequeno quanto possível  Questionar-se:  Preciso que os meus programas tenhm mais registradores disponíveis?  O uso correto dos registradores é fundamental para o bom desempenho da máquina 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 21.  COMO REFERENCIAR UM REGISTRADOR NO MIPS:  Usar um $ seguido de dois caracteres  0 a 31 registradores (32 no total)  EXEMPLO (registradores temporários)  $s0, $s1, etc.  $t0, $t1, etc. 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 22. 3.1. COMPILAÇÃO DE UM COMANDO DE ATRIBUIÇÃO EM C USANDO REGISTRADORES  EXEMPLO:  Dada a linha de código em linguagem C abaixo, qual o código em linguagem de montagem MIPS? f = ( g + h ) – ( i + j );  RESPOSTA:  O compilador deve fazer a associação das variáveis de um programa com os registradores do hardware!!!!!  F = $s0, G = $s1, H = $s2, I = $s3, J = $s4
  • 23.  Código em MIPS: add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1  ENTENDERAM??????? 3.1. COMPILAÇÃO DE UM COMANDO DE ATRIBUIÇÃO EM C USANDO REGISTRADORES
  • 24.  EXERCÍCIOS:  Dada a linha de código em linguagem C abaixo, qual o código em linguagem de montagem MIPS? w = (y - l) + (z - k);  RESPOSTA:  ??? 3.1. COMPILAÇÃO DE UM COMANDO DE ATRIBUIÇÃO EM C USANDO REGISTRADORES
  • 25.  Como tratar estruturas de dados?  Estruturas de Dados podem conter muito mais elementos do que registradores disponíveis no hardware da máquina  Apenas um pequeno número de dados pode ser mantido pelo processador em seus registradores  A memória do computador, no entanto, pode conter milhões de dados  Concluindo, estruturas de dados são armazenadas na memória e não nos registradores. 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 26.  IMPORTANTE:  Operações aritméticas ocorrem somente entre valores armazenados em registradores e refrenciados pelas instruções do MIPS  É necessário que haja instruções de transferência de dados entre a memória e os registradores  Como fazer para acessar uma palavra na memória?  A instrução de transferência de dados deve fornecer o endereço na memória da palavra a ser acessada  Endereço = índice 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 27.  LOAD:  É a instrução de transferência de dados que move um dado da memória para um registrador  Formato da instrução LOAD (lw = load word):  Nome da operação + registrador a ser carregado + constante associada a outro registrador (endereçamento da memória)  Cálculo do endereço da memória:  Constante + conteúdo do registrador associado a ela 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 28.  IMPORTANTE:  Uma instrução LW faz uma cópia do dado da memória  O dado continua armzenado na memória  Portanto, não é feito uma transferencia definitiva  O primeiro índice do array é zero 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 29. 3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM UM OPERANDO NA MEMÓRIA  EXEMPLO:  Traduza o comando de atribuição abaixo, escrito em C, para a linguagem de montagem do MIPS, em que A é um array de 100 palavras. g = h + a[8];  SOLUÇÃO:  G = $s1, H = $s2; $s3 = endereço-base (endereço inicial do array)
  • 30.  Há uma única operação no trecho de código em C, que é a soma!  Um dos operandos da operação está na memória (no caso, o array)  O operando da memória deve ser transferido (copiado) para um registrador (A[8]) 3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM UM OPERANDO NA MEMÓRIA
  • 31.  CÁLCULO DO ENDEREÇO:  Onde está, na memória, o elemento do array que preciso transferir?  Endereço na memória = endereço-base + índice  O valor resultante do cálculo também deve ser guardado em um registrador temporário para uso posterior  Portanto: lw = $t0, 8 ( $s3) #O registrador temporário $t0 recebe a[8] 3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM UM OPERANDO NA MEMÓRIA
  • 32.  Agora, o valor de a[8] já está em um registrador temporário para manipulação ($t0)  O que precisamos fazer agora? Somar o valor de h com o valor que está em a[8]  Portanto: add $s1, $s2, $t0 # g recebe h + a[8] 3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM UM OPERANDO NA MEMÓRIA
  • 33. g = h + a[8]; É o mesmo que: lw = $t0, 8 ( $s3) add $s1, $s2, $t0 3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM UM OPERANDO NA MEMÓRIA
  • 34.  EXERCÍCIOS:  Traduza o comando de atribuição abaixo, escrito em C, para a linguagem de montagem do MIPS, em que A é um array de 100 palavras. w = x + y[4];  SOLUÇÃO  ?????? 3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM UM OPERANDO NA MEMÓRIA
  • 35.  IMPORTANTE:  DESLOCAMENTO:  É a constante que aparece na instrução de transferência de dados  REGISTRADOR-BASE:  É o registrador cujo valor armazenado é somado a esta constante 3.2. COMPILAÇÃO DE UMA ATRIBUIÇÃO COM UM OPERANDO NA MEMÓRIA
  • 36. 3.A – INTERFACE HARDWARE/SOFTWARE  Compilador MIPS  Associa variáveis a registradores  Aloca em endereços de memória determinadas estruturas de dados como os arrays  Aloca espaço de memória para programas e dados  Coloca o endereço inicial nas instruções de transferência de dados
  • 37.  RESTRIÇÃO DE ALINHAMENTO:  As palavras precisam sempre começar em endereços que sejam múltiplos de 4  Porque ocorre?  Quase todas as arquiteturas endereçam bytes individuais (8 bits ou bytes)  O endereço de uma palavra deve ser igual ao endereço de um dos bytes componentes da palavra  O endereço de duas palavras sequencias difere sempre de 4 unidades 3.A – INTERFACE HARDWARE/SOFTWARE
  • 38.  Big endian:  É uma máquina que endereça bytes e usa o byte mais à esquerda para representar o endereço da palavra  Little endian  É uma máquina que endereça bytes e usa o byte mais à direita para representar o endereço da palavra 3.A – INTERFACE HARDWARE/SOFTWARE
  • 39.  O endereçamento de bytes afeta a indexação dos arrays  O deslocamento a ser adicionado ao conteúdo do registrador-base deve ser 4 x Y, de modo que o elemento do array selecionado pela instrução load seja a[Y] e não a[Y/4] 3.A – INTERFACE HARDWARE/SOFTWARE
  • 40.  STORE (sw = store word):  Instrução de armazenamento  Transfere um dado de um registrador para a memória  Formato:  Nome da operação + registrador + deslocamento + registrador-base  Endereço do MIPS:  Constante + conteúdo do registrador 3. OPERANDOS DE HARDWARE DE MÁQUINA
  • 41. 3.3. COMPILAÇÃO USANDO INSTRUÇÕES DE LOAD E STORE  EXEMPLO:  Dado o trecho de código em linguagem C abaixo, qual é o código de montagem em linguagem MIPS? a[12] = h + a[8];  SOLUÇÃO:  Uma única operação (soma)  Dois operandos na memória (a[12] e a[8])
  • 42. 3.3. COMPILAÇÃO USANDO INSTRUÇÕES DE LOAD E STORE  REFORÇANDO: MIPS endereça byte  SOLUÇÃO COMPLETA: lw $t0, 32($s3) add $to, $s2, St0 Sw $to, 48($s3)  DESLOCAMENTOS:  32 pois 4 * 8  48 pois 4 * 12 Os arrays muitas vezes são acessados com variáveis em vez de constantes!!!! O elemento do array pode mudar durante a execução do programa
  • 43. 3.3. COMPILAÇÃO USANDO INSTRUÇÕES DE LOAD E STORE  EXEMPLO:  Dado o trecho de código em linguagem C abaixo, qual é o código de montagem em linguagem MIPS? z[16] = y + z[12];  SOLUÇÃO:  ??????
  • 44. 3.4. COMPILAÇÃO USANDO UMA VARIÁVEL PARA INDEXAR O ARRAY  EXEMPLO:  Dado o trecho de código em linguagem C abaixo, qual o código MIPS correspondente? g = h + a[i];  SOLUÇÃO:  Instrução com uma operação (soma)  Instrução com uma transferência da memória
  • 45. 3.4. COMPILAÇÃO USANDO UMA VARIÁVEL PARA INDEXAR O ARRAY  1º passo:  Calcular o endereço de a[i], para isto:  Multiplicar o valor do índice i por 4 (i *4)  Fazer a multiplicação (i * 4) usando somas: i + i = 2i 2i + 2i = 4i add $t1, $s4, $s4 #2*i add $t1, $t1, $t1 #4*i Em seguida, obter o endereço de a[i] somando $t1 ao endereço-base de a, armazenado em #s3 add $t1, $t1, $s3 #a[i] = (4*i+$s3)
  • 46. 3.4. COMPILAÇÃO USANDO UMA VARIÁVEL PARA INDEXAR O ARRAY  2º passo:  Usar o endereço calculado para carregar a[i] em um registrador lw $t0,0($t1) #$t0=a[i]  Agora somar: add $s1, $s2, $t0 #g=h+a[i]
  • 47. 3.4. COMPILAÇÃO USANDO UMA VARIÁVEL PARA INDEXAR O ARRAY  g = h + a[i];  Código completo: add $t1, $s4, $s4 #2*i add $t1, $t1, $t1 #4*i add $t1, $t1, $s3 #a[i]=(4*i+$s3) lw $t0,0($t1) #$t0=a[i] add $s1, $s2, $t0 #g=h+a[i]
  • 48. 3.4. COMPILAÇÃO USANDO UMA VARIÁVEL PARA INDEXAR O ARRAY  EXEMPLO:  Dado o trecho de código em linguagem C abaixo, qual o código MIPS correspondente? y = x + w[i];  SOLUÇÃO:  ????
  • 49. 3.B – INTERFACE HARDWARE/SOTWARE  São mantidas nos registradores apenas as variáveis usadas com mais frequencia  As demais são colocadas na memória  SPILLING  DERRAMAMENTO DE REGISTRADORES:  É o processo de colocar na memória as variáveis menos usadas  Usa-se instruções de load/store para transferência M<-->R
  • 50. 3.B – INTERFACE HARDWARE/SOTWARE  O acesso à memória é mais lento que o acesso à registradores  Isto porque a quantidade de registradores é menor que os endereços de memória  Portanto, o acesso aos registradores é muito mais rápido que o acesso à memória
  • 51. 3.B – INTERFACE HARDWARE/SOTWARE  INSTRUÇÃO ARITMÉTICA DO MIPS:  Le dois registradores  Opera dados lidos  Escreve o resultado da operação
  • 52. 3.B – INTERFACE HARDWARE/SOTWARE  INSTRUÇÃO DE TRANSFERÊNCIA DO MIPS:  Le um operando  Escreve um operando  Não efetua quaisquer operação
  • 53.  INSTRUÇÃO DE TRANSFERÊNCIA DO MIPS:  Le um operando  Escreve um operando  Não efetua quaisquer operação 3.B – INTERFACE HARDWARE/SOTWARE
  • 54. Nome Exemplo Comentários 32 registradores $s0, $s1  Posições de acesso rápido para armazenamento de dados.  Os dados devem estar em registradores para que as operações aritméticas possam ser relizadas. 230 palavras de memória Memória[0] Memória[4]  Estas posições só são acessadas por instruções de transferência de dados.  Endereça bytes  Os endereços de palavras consecutivas diferem de 4 unidades. 3. OPERANDOS DE HARDWARE DE MÁQUINA TABELA 2: OPERANDOS DO MIPS
  • 55. 3. OPERANDOS DE HARDWARE DE MÁQUINA Categoria Instrução Exemplo Significado Comentário Aritmética add add $s1, $s2, $s3 $s1 = $s2 + $s3 Três operandos Dados em registradores subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3 Três operandos Dados em registradores Transferência de dados load word lw $s1, 100($s2) $s1 = Memória[$s2 + 100] Memória  Registrador store word sw $s1, 100($s2) Memória[$s2 + 100] = $s1 Registrador  Memória TABELA 3: Arquitetura do MIPS
  • 56. 3. OPERANDOS DE HARDWARE DE MÁQUINA  REGISTRADOR-ÍNDICE:  Outro nome para o registrador-base  Objetivo: O registrador nas instruções de transferência de dados foi inventado com o objetivo de guardar o índice de um array, com o deslocamento marcando o endereço inicial de tal array
  • 57. 4. REPRESENTAÇÃO DE INSTRUÇÕES  Mapeamento dos nomes dos registradores em números:  $s0 à $s7 = 16 a 23  $t0 a $t7 = 8 a 15
  • 58. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA  EXEMPLO:  Dada a instrução MIPS abaixo, converta-a para uma instrução de máquina add $t0, $s1, $s2  SOLUÇÃO: 0 17 18 8 0 32 CAMPO 1 CAMPO 2 CAMPO 3 CAMPO 4 CAMPO 5 CAMPO 6 add $s1 $s2 $t0 0 add
  • 59. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA  Campo 1 e Campo 6:  Informam ao MIPS que esta instrução é uma adição  Campo 2:  Informa o número do registrador do primeiro operando-fonte  Campo 3:  Informa o segundo operando-fonte  Campo 4:  Contém o número do registrador que armazenará o resultado  Campo 5:  Não é utilizado nesta instrução, portanto, seu valor é zero.
  • 60. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA Linguagem de Máquina 0 17 18 8 0 32 Código de Máquina 000000 10001 10010 01000 00000 100000 32 bits 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits instrução add $s1 $s2 $t0 0 add 0 17 18 8 0 32 CAMPO 1 CAMPO 2 CAMPO 3 CAMPO 4 CAMPO 5 CAMPO 6 Tipo de instrução Operando-fonte 1 Operando-fonte 2 Resultado da soma Não utilizado Tipo de instrução add $s1 $s2 $t0 0 add
  • 61. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA op rs rt rd shamt Funct Operação básica – OpCode – Código da Operação Operando fonte (registrador) Operando fonte (registrador) Registrador destino (armazena o resultado da operação) Deslocamento de bits Código de função Função. Variação da operação 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Problema: manter todas as instruções do mesmo tamanho e de ter um único formato de instrução Princípio de projeto 3: Um bom projeto demanda compromisso! No MIPS toda as instruções tem o mesmo tamanho (em bits), mas permite formatos diferentes!
  • 62. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA  Formato R-TYPE ou formato R-FORMAT, pois a instrução usa registradores (exemplo dos slides anteriores)  Formato I-TYPE ou I-FORMAT usado na representação de instruções de transferência de dados op rs rt Endereço 6 bits 5 bits 5 bits 16 bits Registrador base Registrador destino Uma instrução de load word pode carregar qualquer palavra dentro da faixa entre o endereço constante no registrador base (rs) acrescido ou decrescido de 32.768 bytes (ou 8.192 palavras)
  • 63. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA  Exemplo:  g = h + A[8];  lw $t0, 32($s3) #Registrador temporário recebe a[8]  A distinção entre os formatos de instruções no MIPS se dá pelo valor do primeiro campo op rs rt Endereço lw $s3 $t0 32 35 19 8 32 6 bits 5 bits 5 bits 16 bits
  • 64. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA Instrução Formato op rs rt rd shamt funct Endereço add R 0 Reg Reg Reg 0 32 não existe sub R 0 Reg Reg Reg 0 34 não existe lw I 35 Reg Reg não existe não existe não existe Endereço sw I 43 Reg Reg não existe não existe não existe Endereço REG = é o número de um registrador entre 0 e 31 ENDEREÇO = é um valor de 16 bits ADD e SUB tem o mesmo valor no código da operação. O hardware sabe a diferença pelo campo FUNCT, que não é igual para os dois. 0 é o código para operação aritmética.
  • 65. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA  Exemplo: Dado o código em linguagem de alto nível A[300] = h + A[300], converta-o para código MIPS, faça a representação de linguagem de máquina e de código de máquina. lw $t0, 1200 ($t1) add $t0, $s2, $t0 sw $to, 1200($t1)
  • 66. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA op rs rt rd Shamt/endereço funct lw ($t1) $t0 1200 35 9 8 1200 100011 01001 01000 0000 0100 1011 0000 add $s2 $t0 $t0 0 18 8 8 0 32 000000 10010 01000 01000 00000 100000 sw ($t1) $t0 1200 43 9 8 1200 101011 01001 01000 0000 0100 1011 0000
  • 67. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA Nome Formato Exemplo Comentários add R 0 18 19 17 0 32 add $s1, $s2, $s3 sub R 0 18 19 17 0 34 sub $s1, $s2, $s3 lw I 35 18 17 100 lw $s1, 100($s2) sw I 43 18 17 100 Sw $s1, 100($s2) Tamanho do campo 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Todas as instruções do MIPS tem 32 bits Formato R R op rs rt rd shamt funct Formato das instruções aritméticas Formato I I op rs rt endereço Formato das instruções de transferência de dados
  • 68. 4.1 TRADUÇÃO DE UMA INSTRUÇÃO NA LINGUAGEM DE MONTAGEM DO MIPS PARA UMA INSTRUÇÃO DE MÁQUINA  A construção de computadores hoje deve obedecer a dois princípios:  As instruções são representadas em forma de número  Os programas devem ser armazenados na memória antes de serem executados  CONCEITO DE PROGRAMA ARMAZENADO