Conjunto de instruções mips

68
Conjunto de Instruções MIPS ENGENHARIA DE COMPUTAÇÃO UNIVERSIDADE SAGRADO CORAÇÃO PROF.ª M.ª ENG.ª ELAINE CECÍLIA GATTO

description

Instruções em linguagem da máquina.

Transcript of Conjunto de instruções mips

Page 1: Conjunto de instruções mips

Conjunto de Instruções MIPSENGENHARIA DE COMPUTAÇÃO

UNIVERSIDADE SAGRADO CORAÇÃO

PROF.ª M.ª ENG.ª ELAINE CECÍLIA GATTO

Page 2: Conjunto de instruções mips

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.

Page 3: Conjunto de instruções mips

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

Page 4: Conjunto de instruções mips

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.

Page 5: Conjunto de instruções mips

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

Page 6: Conjunto de instruções mips

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

Page 7: Conjunto de instruções mips

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)

Page 8: Conjunto de instruções mips

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

Page 9: Conjunto de instruções mips

2. OPERAÇÕES EXECUTADAS PELO HARDWARE DA MÁQUINA

PRINCÍPIOS DE PROJETO1. 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

Page 10: Conjunto de instruções 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

Page 11: Conjunto de instruções mips

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:

??????

Page 12: Conjunto de instruções mips

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

Page 13: Conjunto de instruções mips

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

Page 14: Conjunto de instruções mips

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

Page 15: Conjunto de instruções mips

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)

Page 16: Conjunto de instruções mips

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

Page 17: Conjunto de instruções mips

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

Page 18: Conjunto de instruções mips

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 PROJETO2. 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

Page 19: Conjunto de instruções mips

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

Page 20: Conjunto de instruções mips

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

Page 21: Conjunto de instruções mips

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

Page 22: Conjunto de instruções mips

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

Page 23: Conjunto de instruções mips

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

Page 24: Conjunto de instruções mips

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

Page 25: Conjunto de instruções mips

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

Page 26: Conjunto de instruções mips

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

Page 27: Conjunto de instruções mips

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

Page 28: Conjunto de instruções mips

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

Page 29: Conjunto de instruções mips

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)

Page 30: Conjunto de instruções mips

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

Page 31: Conjunto de instruções mips

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

Page 32: Conjunto de instruções mips

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

Page 33: Conjunto de instruções mips

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

Page 34: Conjunto de instruções mips

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

Page 35: Conjunto de instruções mips

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

Page 36: Conjunto de instruções mips

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

Page 37: Conjunto de instruções mips

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

Page 38: Conjunto de instruções mips

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

Page 39: Conjunto de instruções mips

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

Page 40: Conjunto de instruções mips

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

Page 41: Conjunto de instruções mips

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])

Page 42: Conjunto de instruções mips

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

Page 43: Conjunto de instruções mips

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: ??????

Page 44: Conjunto de instruções mips

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

Page 45: Conjunto de instruções mips

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 = 2i2i + 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)

Page 46: Conjunto de instruções mips

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]

Page 47: Conjunto de instruções mips

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]

Page 48: Conjunto de instruções mips

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: ????

Page 49: Conjunto de instruções mips

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

Page 50: Conjunto de instruções mips

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

Page 51: Conjunto de instruções mips

3.B – INTERFACE HARDWARE/SOTWARE

INSTRUÇÃO ARITMÉTICA DO MIPS: Le dois registradores Opera dados lidos Escreve o resultado da operação

Page 52: Conjunto de instruções mips

3.B – INTERFACE HARDWARE/SOTWARE

INSTRUÇÃO DE TRANSFERÊNCIA DO MIPS: Le um operando Escreve um operando Não efetua quaisquer operação

Page 53: Conjunto de instruções mips

INSTRUÇÃO DE TRANSFERÊNCIA DO MIPS: Le um operando Escreve um operando Não efetua quaisquer operação

3.B – INTERFACE HARDWARE/SOTWARE

Page 54: Conjunto de instruções mips

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

Page 55: Conjunto de instruções 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 operandosDados em registradores

subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3

Três operandosDados 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

Page 56: Conjunto de instruções 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

Page 57: Conjunto de instruções mips

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

Page 58: Conjunto de instruções mips

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

Page 59: Conjunto de instruções mips

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.

Page 60: Conjunto de instruções mips

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

Page 61: Conjunto de instruções mips

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!

Page 62: Conjunto de instruções mips

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)

Page 63: Conjunto de instruções mips

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

Page 64: Conjunto de instruções mips

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.

Page 65: Conjunto de instruções mips

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)

Page 66: Conjunto de instruções mips

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

Page 67: Conjunto de instruções mips

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

Page 68: Conjunto de instruções mips

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