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