SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
MIPS 32 BITS
DISCIPLINA DE ARQUITETURA DE
COMPUTADORES
CURSOS DE BACHARELADO EM
ENGENHARIA DE COMPUTAÇÃO E
CIÊNCIA DA COMPUTAÇÃO
Bauru-SP
2015
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
2
LISTA DE TABELAS
Tabela 1: Tabela de Operandos do MIPS....................................................................................................18
Tabela 2: Tabela de Instruções na Linguagem de Montagem .....................................................................18
Tabela 3: Tabela de Instruções em Linguagem de Máquina .......................................................................18
Tabela 4: Tabela de código binário dos registradores .................................................................................19
Tabela 5: Tabela de código binário das instruções......................................................................................19
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
3
SUMÁRIO
A. RESUMO EXERCÍCIOS MIPS...............................................................................................................4
1. Compilação de um comando de atribuição............................................................................................4
2. Compilação de uma atribuição com um operando na memória ............................................................4
3. Compilação usando instruções de LOAD WORD e STORE WORD...................................................5
4. Compilação usando uma variável para indexar o ARRAY...................................................................6
5. Compilação de um comando IF em uma instrução de DESVIO CONDICIONAL ..............................7
6. Compilação de um comando IF-THEN-ELSE em DESVIOS CONDICIONAIS ................................8
7. Compilação de um LOOP contendo um ARRAY com índice variável ................................................9
8. Compilação de um LOOP WHILE......................................................................................................11
9. Compilação do Teste LESS THAN.....................................................................................................12
10. Compilação de um comando SWITCH a partir de uma tabela de endereços de DESVIO ...............14
B. OPERANDOS DO MIPS........................................................................................................................18
C. LINGUAGEM DE MONTAGEM DO MIPS ........................................................................................18
D. LINGUAGEM DE MÁQUINA DO MIPS ............................................................................................18
E. TABELA DE CONVERSÃO BINÁRIA................................................................................................19
E. EXERCÍCIOS .........................................................................................................................................19
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
4
A. RESUMO EXERCÍCIOS MIPS
1. Compilação de um comando de atribuição
a) Instrução
f = (g + h) – (i + j);
F = $s0, G = $s1, H = $s2, I = $s3, J = $s4
b) Linguagem de montagem
ADD $t0, $s1, $s2
ADD $t1, $s3, $s4
SUB $s0, $t0, $t1
c) Linguagem de máquina
ADD $8, $17, $18
ADD $9, $19, $20
SUB $16, $8, $9
d) Representação das instruções (Consultar as tabelas 3, 4 e 5 para fazer a representação)
TIPO INSTRUÇÃO REPRESENTAÇÃO
R ADD $t0, $s1, $s2 0 $s1 $s2 $t0 0 32
R ADD $t1, $s3, $s4 0 $s3 $s4 $t1 0 32
R SUB $s0, $t0, $t1 0 $t0 $t1 $s0 0 34
TIPO INSTRUÇÃO REPRESENTAÇÃO
R ADD $8, $17, $18 0 $17 $18 $8 0 32
R ADD $9, $19, $20 0 $19 $20 $9 0 32
R SUB $16, $8, $9 0 $8 $9 $16 0 34
e) Código de Máquina
TIPO INSTRUÇÃO REPRESENTAÇÃO
R ADD $t0, $s1, $s2 000000 10001 10010 01000 00000 100000
R ADD $t1, $s3, $s4 000000 10011 10100 01001 00000 100000
R SUB $s0, $t0, $t1 000000 01000 01001 10000 00000 100010
2. Compilação de uma atribuição com um operando na memória
a) Instrução
g = h + a[8];
G = $s0, H = $s1, A = $s2
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
5
b) Linguagem de montagem
lw $t0, 8 ($s3)
add $s1, $s2, $t0
c) Linguagem de máquina
lw $8, 8 ($19)
add $16, $17, $8
d) Representação das instruções (Consultar as tabelas 3, 4 e 5 para fazer a representação)
TIPO INSTRUÇÃO REPRESENTAÇÃO
R lw $t0, 8($s3) 35 $t0 $s3 8
I add $s1, $s2, $t0 0 $s2 $t0 $s1 0 32
TIPO INSTRUÇÃO REPRESENTAÇÃO
R lw $8, 8($19) 35 $8 $19 8
I add $16, $17, $8 0 $17 $8 $16 0 32
e) Código de Máquina
TIPO INSTRUÇÃO REPRESENTAÇÃO
R lw $t0, 8($s3) 100011 010000 10011 0000 0000 0000 1000
I add $s1, $s2, $t0 000000 10001 01000 10000 00000 100000
3. Compilação usando instruções de LOAD WORD e STORE WORD
a) Instrução
a[12] = h + a[8];
A = $s0, H = $s1
b) Linguagem de montagem
lw $t0, 32($s0)
add $t0, $s1, $t0
sw $t0, 48($s0)
c) Linguagem de máquina
lw $t0, 32($s0)
add $t0, $s1, $t0
sw $t0, 48($s0)
d) Representação das instruções (Consultar as tabelas 3, 4 e 5 para fazer a representação)
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
6
TIPO INSTRUÇÃO REPRESENTAÇÃO
I lw $t0, 32($s0) 35 $t0 $s0 32
R add $t0, $s1, $t0 0 $t0 $s1 $t0 0 32
I sw $t0, 48($s0) 43 $t0 $s0 48
TIPO INSTRUÇÃO REPRESENTAÇÃO
I lw $8, 32($16) 35 8 16 32
R add $8, $17, $8 0 8 17 8 0 32
I sw $8, 48($16) 43 8 16 48
e) Código de Máquina
TIPO INSTRUÇÃO REPRESENTAÇÃO
I lw $t0, 32($s0) 100011 01000 10000 0000 0000 0010 0000
R add $t0, $s1, $t0 000000 01000 10001 01000 00000 100000
I sw $t0, 48($s0) 101011 01000 10000 0000 0000 0011 0000
4. Compilação usando uma variável para indexar o ARRAY
a) Instrução
g = h + a[i];
G = $s0, H = $s1, A = $s2, I = $s3
b) Linguagem de montagem
add $t0, $s3, $s3 #2*i
add $t0, $t0, $t0 #4*i
add $t0, $t0, $s2 #a[i]=(4*i+$s2)
lw $t1,0($t0) #$t1=a[i]
add $s0, $s1, $t1 #g=h+a[i]
c) Linguagem de máquina
add $8, $19, $19 #2*i
add $8, $8, $8 #4*i
add $8, $8, $18 #a[i]=(4*i+$s2)
lw $9,0($8) #$t1=a[i]
add $16, $17, $9 #g=h+a[i]
d) Representação das instruções (Consultar as tabelas 3, 4 e 5 para fazer a representação)
TIPO INSTRUÇÃO REPRESENTAÇÃO
R add $t0, $s3, $s3 0 $s3 $s3 $t0 0 32
R add $t0, $t0, $t0 0 $t0 $t0 $t0 0 32
R add $t0, $t0, $s2 0 $t0 $t0 $s2 0 32
I lw $t1,0($t0) 35 $t1 $t0 0
R add $s0, $s1, $t1 0 $s1 $t1 $s0 0 32
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
7
TIPO INSTRUÇÃO REPRESENTAÇÃO
R add $8, $19, $19 0 $19 $19 $8 0 32
R add $8, $8, $8 0 $8 $8 $8 0 32
R add $8, $8, $18 0 $8 $18 $8 0 32
I lw $9,0($8) 35 $9 $8 0
R add $16, $17, $9 0 $17 $9 $16 0 32
e) Código de Máquina
TIPO INSTRUÇÃO REPRESENTAÇÃO
R add $t0, $s3, $s3
R add $t0, $t0, $t0
R add $t0, $t0, $s2
I lw $t1,0($t0)
R add $s0, $s1, $t1
5. Compilação de um comando IF em uma instrução de DESVIO CONDICIONAL
FORMATO DA INSTRUÇÃO BEQ (branch on equal – desvie se igual):
BEQ registrador1, registrador2, endereço de desvio.
Código da operação (6bits) Registrador1 (5 bits) Registrador2 (5 bits) Endereço de desvio (16 bits)
FUNÇÃO: força um desvio para o comando com o LABEL se o valor no registrador1 for igual ao valor
no registrador2.
a) Instrução
if(i==j) go to L1;
f = g + h;
L1: f = f - i;
f = $s0; g = $s1; h = $s2; i = $s3; j = $s4
b) Linguagem de montagem
beq $s3, $s4, L1 #desvia para L1 se i = j
add $s0, $s1, $s2 #f=g+h (não executa esta instrução se i=j)
L1: sub $s0, $s0, $s3 #f=f-i (sempre executa)
c) Linguagem de máquina
beq $19, $20, L1 #desvia para L1 se i = j
add $16, $s17 $18 #f=g+h (não executa esta instrução se i=j)
L1: sub $16, $16, $19 #f=f-i (sempre executa)
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
8
d) Representação das instruções
END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO
80000 I beq $s3, $s4, L1 4 $s3 $s4 L1: 80008 - 80000 = 8 / 4 = 2
80004 R add $s0, $s1, $s2 0 $s1 $s2 $s0 0 32
80008 R L1: sub $s0, $s0, $s3 0 $s0 $s3 $s0 0 34
END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO
80000 I beq $s3, $s4, L1 4 $19 $20 2
80004 R add $s0, $s1, $s2 0 $17 $18 $16 0 32
80008 R L1: sub $s0, $s0, $s3 0 $16 $19 $16 0 34
e) Código de Máquina (preencher com o número binário correspondente)
END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO
80000 I beq $s3, $s4, L1
80004 R add $s0, $s1, $s2
80008 R L1: sub $s0, $s0, $s3
6. Compilação de um comando IF-THEN-ELSE em DESVIOS CONDICIONAIS
FORMATO DA INSTRUÇÃO BNE (branch not on equal):
BNE registrador1, registrador2, endereço de desvio.
Código da operação (6bits) = 5 Registrador1 (5
bits)
Registrador2 (5 bits) Endereço de desvio (16 bits)
FUNÇÃO: a próxima instrução a ser executada é aquela que estiver armazenada no endereço do LABEL
se o valor no registrador 1 for diferente do valor no registrador 2
a) Instrução
if( i == j )
f = g + h;
else
f = g – h;
f = $s0; g = $s1; h = $s2; i = $s3; j = $s4
b) Linguagem de montagem
bne $s3, $s4, Else # desvia para ELSE se I < > j
add $s0, $s1, $s2 # f = g + h (salta esta instrução se i <> k
j Exit # desvia para exit
Else: sub $s0, $s1, $s2 # f = g – h (salta esta instrução se i = j
Exit:
c) Linguagem de máquina
bne $19, $20, Else # desvia para ELSE se I < > j
add $16, $17, $18 # f = g + h (salta esta instrução se i <> k
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
9
j Exit # desvia para exit
Else: sub $16, $17, $18 # f = g – h (salta esta instrução se i = j
Exit:
d) Representação das instruções
END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO
80000 I bne $s3, $s4, Else 5 $s3 $s4 80012
80004 R add $s0, $s1, $s2 0 $s1 $s2 $s0 0 32
80008 J j Exit 2 80016
80012 I ELSE: sub $s0, $s1, $s2 0 $s1 $s3 $s0 0 34
80016 Exit:
Usamos o PC para calcular o endereço relativo da memória:
 Pegar o endereço da instrução seguinte à instrução corrente que contém o LABEL, portanto, 80.004
 Somar o endereço com 8, portanto, 80.004 + 8 = 80.012
 Portanto, o valor que devemos colocar para ELSE é o número 8
END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO
80000 I bne $19, $20, Else 5 $19 $20 8
80004 R add $16, $17, $18 0 $16 $17 $18 0 32
80008 J j Exit 2 80.016
80012 I ELSE: sub $16, $17, $18 0 $17 $18 $16 0 34
80016 EXIT:
Para J EXIT usar o próprio endereço 80.016 que pode ser representado em 26 bits (00 0000 0001 0011 1000 1001 0000)
e) Código de Máquina
TIPO INSTRUÇÃO REPRESENTAÇÃO
I bne $19, $20, Else 000101 10011 10100
R add $16, $17, $18 000000 10000 10001 10010 00000 100000
J j Exit 000010 00 0000 0001 0011 1000 1001 0000
I sub $16, $17, $18 000000 10001 10010 10000 00000 100010
7. Compilação de um LOOP contendo um ARRAY com índice variável
a) Instrução
Loop: g = g + A[i];
i = i + j;
if( i != h ) go to Loop;
g = $s1; h = $s2; i = $s3; j = $s4; A = $s5
b) Linguagem de montagem
Loop: add $t1, $s3, $s3 # $T1 = 2 * i
add $t1, $t1, $t1 # $T1 = 4 * i
add $t1, $t1, $s5 # $T1 = A[i]
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
10
lw $t0, 0($t1) # $T0 = A[i]
add $s1, $s1, $t0 # G = G + A[I]
add $s3, $s3, $s4 # I = I + J
bne $s3, $s2, Loop # desvia para LOOP se i < > h
c) Linguagem de máquina
Loop: add $9, $19, $19 # $T1 = 2 * i
add $9, $9, $9 # $T1 = 4 * i
add $9, $9, $21 # $T1 = A[i]
lw $8, 0($9) # $T0 = A[i]
add $17, $17, $8 # G = G + A[I]
add $19, $19, $20 # I = I + J
bne $19, $18, Loop # desvia para LOOP se i < > h
d) Representação das instruções
END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO
8 0000
R
Loop: add $t1, $s3,
$s3
0 $s3 $s3 $t1 0 32
8 0004 R add $t1, $t1, $t1 0 $t1 $t1 $t1 0 32
8 0008 R add $t1, $t1, $s5 0 $t1 $s5 $t1 0 32
8 0012 I lw $t0, 0($t1) 43 $t1 $t0 0
8 0016 R add $s1, $s1, $t0 0 $s1 $t0 $s1 0 32
8 0020 R add $s3, $s3, $s4 0 $s3 $s4 $s3 0 32
8 0024 I bne $s3, $s2, Loop 5 $s3 $s2 Loop (8 0000)
END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO
8 0000 R add $9, $19, $19 0 $19 $19 $9 0 32
8 0004 R add $9, $9, $9 0 $9 $9 $9 0 32
8 0008 R add $9, $9, $21 0 $9 $21 $9 0 32
8 0012 I lw $8, 0($9) 43 $8 $9 0
8 0016 R add $17, $17, $8 0 $17 $8 $17 0 32
8 0020 R add $19, $19, $20 0 $19 $20 $19 0 32
8 0024 I bne $19, $18, Loop 5 $19 $18 LOOP (-24: 8 0000)
-24 POIS: 80000 - 80024 = -24. Precisa voltar pra 80000, portanto é necessário fazer PC + (-X) = PC É
80024.
e) Código de Máquina
END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO
80000 R add $9, $19, $19 000000
80004 R add $9, $9, $9 000000
80008 R add $9, $9, $21 000000
80012 I lw $8, 0($9)
80016 R add $17, $17, $8 000000
80020 R add $19, $19, $20 000000
80024 I bne $19, $18, Loop
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
11
8. Compilação de um LOOP WHILE
a) Instrução:
While( save[i] == k )
i = i +j;
b) Linguagem de montagem
Loop: add $t1, $s3, $s3 # T1 = 2 * i
add $t1, $t1, $t1 # T1 = 4 * i
add $t1, $t1, $s6 # T1 = save[i]
lw $t0, 0($t1) # T0 = save[i]
bne $t0, $s5, Exit # desvia para EXIT se save[i] < > K
add $s3, $s3, $s4 # i = i + j
j Loop # desvia para Loop
Exit;
c) Linguagem de máquina
Loop: add $9, $19, $19 # T1 = 2 * i
add $9, $9, $9 # T1 = 4 * i
add $9, $9, $s6 # T1 = save[i]
lw $8, 0($9) # T0 = save[i]
bne $8, $21, Exit # desvia para EXIT se save[i] < > K
add $19, $19, $20 # i = i + j
j Loop # desvia para Loop
Exit;
d) Representação das instruções
END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO
80000 R Loop: add $t1, $s3, $s3 0 $s3 $s3 $t1 0 32
80004 R add $t1, $t1, $t1 0 $t1 $t1 $t1 0 32
80008 R add $t1, $t1, $s6 0 $t1 $s6 $t1 0 32
80012 I lw $t0, 0($t1) 43 $t1 $t0 0
80016 I bne $t0, $s5, Exit 5 $t0 $s5 8
80020 R add $s3, $s3, $s4 0 $s3 $s4 $s3 0 32
80024 J j Loop 2 80000
80028 EXIT
END.MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO
80000 R Loop: add $9, $19, $19 0 $19 $19 $9 0 32
80004 R add $9, $9, $9 0 $9 $9 $9 0 32
80008 R add $9, $9, $s6 0 $9 $6 $9 0 32
80012 I lw $8, 0($9) 43 $9 $8 0
80016 I bne $8, $21, Exit 5 $8 $21 8
80020 R add $19, $19, $20 0 $19 $19 $20 0 32
80024 J j Loop 2 -24
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
12
80.020 + 8 = 80.028
 EXIT: Conteudo do registrador + campo do endereço (cálculo feito pela instrução de desvio condicional)
 *2 = duas instruções de distância
 PC = registrador que contém o valor da instrução corrente
 Desvios condicionais tendem a desviar para uma instrução próxima
 Quase metade de todos os desvios condicionais é para endereços situados a menos de 16 INSTRUÇÕES da origem
do desvio.
 ENDEREÇO RELATIVO AO PC = endereço relativo à instrução seguinte e não à corrente  PC + 4
e) Código de Máquina
Formato Instrução Representação
R add $9, $19, $19 000000 10011 10011 1001 00000 100000
R add $9, $9, $9 000000 01001 1001 1001 00000 100000
R add $9, $9, $s6 000000 01001 110 1001 00000 100000
I lw $8, 0($9) 101011 01001 1000 0000 0000 0000 0000
I bne $8, $21, Exit 000101 01000 10101
R add $19, $19, $20 000000 10011 10011 10100 00000 100000
J j Loop 000010 11 1111 1111 1111 1111 1110 1000
9. Compilação do Teste LESS THAN
FORMATO DA INSTRUÇÃO SLT (set on less than):
SLT registrador temporário, registrador1, registrador2.
Código da
operação
(6bits) = 0
Registrador a
ser
comparado 1
(5 bits)
Registrador a
ser
comparado 2
(5 bits)
Registrador
temporário (5
bits)
Shamt
(0 - 5
bits)
Código da operação
aritmética (6 bits) =
42
FUNÇÃO: compara dois valores de dois registradores diferentes e atribui o valor 1 a um terceiro
registrador se o valor do primeiro registrador for menor que o valor do segundo registrador. Caso
contrário, atribui zero.
a) Instrução: Qual o código MIPS necessário para testar se uma variável A, correspondente ao
registrador $S0, é menor que outra variável B (registrador $S1) e desviar para o LABEL LESS se
a condição for verdadeira?
b) Linguagem de montagem
slt $t0, $s0, $s1 # T0 = 1 se $s0 < $s1 (se a < b)
bne $t0, $zero, Less # desvia para Less se $t0<>0
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
13
c) Linguagem de máquina
slt $8, $16, $s17 # T0 = 1 se $s0 < $s1 (se a < b)
bne $8, $0, Less # desvia para Less se $t0<>0
d) Representação das instruções
Formato Instrução Representação
R slt $t0, $s0, $s1 0 $s0 $s1 $t0 0 42
I bne $t0, $zero, Less 5 $t0 $zero Less
Formato Instrução Representação
R slt $8, $16, $17 0 $16 $17 $8 0 42
I bne $8, $zero, Less 5 $8 $zero Less
e) Código de Máquina
Formato Instrução Representação
R slt $8, $16, $17 000000 10000 10001 01000 00000 101010
I bne $8, $0, Less 000101 01000 00000 Less
EXEMPLO:
a) Instrução:
if ( i < j )
a = b + c;
else
a = b – c;
a = $s0, b = $s1, c = $s2, i = $s3, j = $s4
b) Linguagem de Montagem
slt $t0, $s3, $s4 # T0 = 1 se ($s0 < $s1), isto é se (a < b). T0 = 0 se
($s0 > $s1), isto é se (a > b)
bne $t0, $zero, ELSE # se ($t0<>0) desvia para ELSE, caso contrário executa
a instrução seguinte
add $s0, $s1, $s2 # a = b + c; (se $t0 <> 0)
j Exit # desvia para exit
ELSE: sub $s0, $s3, $s4 # a = b – c; (se $t0 = 0)
Exit:
c) Linguagem de Máuina
slt $t0, $s3, $s4
bne $t0, $zero, ELSE
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
14
add $s0, $s1, $s2
j Exit
ELSE: sub $s0, $s3, $s4
Exit:
d) Representação das instruções
Endereço M. Formato Instrução Representação
80000 R slt $t0, $s3, $s4 0 $s3 $s4 $t0 0 42
80004 I bne $t0, $zero, ELSE 5 $t0 $zero ELSE
80008 R add $s0, $s1, $s2 0 $s1 $s2 $s0 0 32
80012 J j Exit 2 EXIT
80016 R ELSE: sub $s0, $s3, $s4 0 $s0 $s3 $s4 0 34
80020 Exit:
Endereço M. Formato Instrução Representação
80000 R slt $8, $19, $20 0 $19 $20 $8 0 42
80004 I bne $8, $zero, ELSE 5 $8 $zero ELSE
80008 R add $16, $17, $18 0 $17 $18 $16 0 32
80012 J j Exit 2 EXIT
80016 R ELSE: sub $16, $19, $20 0 $19 $20 $16 0 34
80020 Exit
e) Código de máquina
Formato Instrução Representação
R slt $t0, $s3, $s4
I bne $t0, $zero, ELSE
R add $s0, $s1, $s2
J j Exit
R ELSE: sub $s0, $s3, $s4
Exit:
10. Compilação de um comando SWITCH a partir de uma tabela de endereços de
DESVIO
a) Instrução:
Switch (k) {
case 0:
f = i + j; // k = 0
break;
case 1:
f = g + h; // k=1
break;
case 2:
f = g – h; // k = 2
break;
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
15
case 3:
f = i – j; // k = 3
break;
}
b) Linguagem de montagem
###
- A variável K do comando SWITCH será usada para indexar uma tabela de
endereços de desvio, para então desviar com base no valor carregado.
- Primeiro o valor de K é testado para ter certeza de que ele é igual a
um dos valores do comando case (entre 0 e 1).
- Se não for verdade, o programa ABANDONA o comando SWITCH
###
slt $t3, $s5, $zero # testa se K < 0
bne $t3, $zero, Exit # se K < 0 desvia para EXIT
slt $t3, $s5, $t2 # testa se K < 4
beq $t3, $zero, Exit # se K >= 4 desvia para EXIT
# Primeiro precisamos multiplicar o valor de K por 4 para transformá-lo
em um endereço de BYTE
add $t1, $s5, $s5 # T1 = 2 * K
add $t1, $t1, $t1 # T1 = 4 * K
###
Suponha que quarto palavras consecutivas na memória tenham endereços
correspondentes aos labels L0, L1, L2 e L3, começando no endereço
armazenado em $T4. O endereço do desvio pode ser carregado em um
registrador, neste caso $T0
###
add $t1, $t1, $t4 # T1 = endereço de JumpTable[K]
lw $t0, 0($t1) # T0 = JumpTable[K]
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
16
# A execução de uma instrução de desvio para o conteúdo de um registrador
faz com que o programa passe a executar a instrução apontada na tabela de
endereços de desvio
jr $t0 # desvia com base no conteúdo de $T0
# Traduzindo os CASOS
L0: add $s0, $s3, $s4 # K = 0  f = i + j
j Exit # fim deste case, desvia para EXIT
L1: add $s0, $s1, $s2 # K = 1  f = g + h
j Exit # fim deste case, desvia para EXIT
L2: sub $s0, $s1, $s2 # K = 2  f = g - h
j Exit # fim deste case, desvia para EXIT
###
- No último case podemos eliminar o desvio para a saída do comando
SWITCH, pois as instruções deste case são as últimas do switch.
- No entanto, um LABEL EXIT deve ser pendurado depois do último comando
deste case para marcar o final do comando switch.
###
L3: sub $s0, $s3, $s4 # K = 3  f = i – j
Exit # fim do switch
c) Linguagem de máquina
slt $11, $21, $zero # testa se K < 0
bne $11, $zero, Exit # se K < 0 desvia para EXIT
slt $11, $21, $10 # testa se K < 4
beq $11, $zero, Exit # se K >= 4 desvia para EXIT
add $9, $21, $21 # T1 = 2 * K
add $9, $9, $9 # T1 = 4 * K
add $9, $9, $12 # T1 = endereço de JumpTable[K]
lw $8, 0($9) # T0 = JumpTable[K]
jr $8 # desvia com base no conteúdo de $T0
L0: add $16, $19, $20 # K = 0  f = i + j
j Exit # fim deste case, desvia para EXIT
L1: add $16, $17, $18 # K = 1  f = g + h
j Exit # fim deste case, desvia para EXIT
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
17
L2: sub $16, $17, $18 # K = 2  f = g - h
j Exit # fim deste case, desvia para EXIT
L3: sub $16, $19, $20 # K = 3  f = i – j
Exit # fim do switch
d) Representação das instruções
REPRESENTAÇÃO DA LINGUAGEM DE MONTAGEM
Endereço M. Formato Instrução Representação
80000 R slt $t3, $s5, $zero 0 $s5 $zero $t3 0 42
80004 I bne $t3, $zero, Exit 5 $t3 $zero 80064
80008 R slt $t3, $s5, $t2 0 $s5 $t2 $t3 0 42
80012 I beq $t3, $zero, Exit 4 $t3 $zero 80064
80016 R add $t1, $s5, $s5 0 $s5 $s5 $t1 0 32
80020 R add $t1, $t1, $t1 0 $t1 $t1 $t1 0 32
80024 R add $t1, $t1, $t4 0 $t1 $t4 $t1 0 32
80028 I lw $t0, 0($t1) 35 $t1 $t0 0
80032 R jr $t0 0 $t0 0 0 0 8
80036 R add $s0, $s3, $s4 0 $s3 $s4 $s0 0 32
80040 R j Exit 2 80064
80044 R add $s0, $s1, $s2 0 $s1 $s2 $s0 32
80048 R j Exit 2 80064
80052 R sub $s0, $s1, $s2 0 $s1 $s2 $s0 34
80056 R j Exit 2 80064
80060 R sub $s0, $s3, $s4 0 $s3 $s4 $s0 34
80064 Exit
REPRESENTAÇÃO DA LINGUAGEM DE MÁQUINA
Formato Instrução
80000 R slt $11, $21, $zero 0 21 0 11 0 42
80004 I bne $11, $zero, Exit 5 11 0 60
80008 R slt $11, $21, $10 0 21 10 11 0 42
80012 I beq $11, $zero, Exit 4 11 0 52
80016 R add $9, $21, $21 0 21 21 9 0 32
80020 R add $9, $9, $9 0 9 9 9 0 32
80024 R add $9, $9, $12 0 9 12 9 0 32
80028 I lw $8, 0($9) 35 9 8 0
80032 R jr $8 0 8 0 0 0 8
80036 R add $16, $19, $20 0 19 20 16 0 32
80040 R j Exit 2 24
80044 R add $16, $17, $18 0 17 18 16 32
80048 R j Exit 2 16
80052 R sub $16, $17, $18 0 17 18 16 34
80056 R j Exit 2 8
80060 R sub $16, $19, $20 0 19 20 16 34
80064 Exit
e) Código de máquina
6 5 5 5 5 6
80000 R slt $11, $21, $zero 000000 10101 00000 01011 00000 101010
80004 I bne $11, $zero, Exit 000101 01011 00000
80008 R slt $11, $21, $10 000000 10101 01010 01011 00000 101010
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
18
80012 I beq $11, $zero, Exit 000100 01011 00000
80016 R add $9, $21, $21 000000 10101 10101 01001 00000 100000
80020 R add $9, $9, $9 000000 01001 01001 01001 00000 100000
80024 R add $9, $9, $12 000000 01001 01100 01001 00000 100000
80028 I lw $8, 0($9) 100011 01001 01000
80032 R jr $8 000000 01001 00000 00000 00000 001000
80036 R add $16, $19, $20 000000 10011 10100 10000 00000 100000
80040 R j Exit 000010 0000 0000 0000 0001 0011 1000 1001 0000
80044 R add $16, $17, $18 000000 10001 10010 10000 100000
80048 R j Exit 000010 0000 0000 0000 0001 0011 1000 1001 0000
80052 R sub $16, $17, $18 000000 10001 10010 10000 100010
80056 R j Exit 000010 0000 0000 0000 0001 0011 1000 1001 0000
80060 R sub $16, $19, $20 000000 10011 10100 10000 100010
80064 EXIT
B. OPERANDOS DO MIPS
Tabela 1: Tabela de Operandos do MIPS
Nome Exemplo Comentários
32 registradores
$s0, $s1,
$s2, $s3,
$s4, $s5,
$s6, $s7
- Posições de acesso rápido para armazenamento de dados.
- No MIPS, os dados devem estar em registradores para que aas operações aritméticas possam ser realizadas.
- Os registradores $s0 - $s7 são mapeados nos registradores reais de número 16-23 e os registradores $t0-$t7 nos
de número 8-15.
- O registrador $zero do MIPS sempre tem o valor 0 armazenado nele.
230 palavras de
memória
$t0, $t1,
$t2, $t3,
$t4, $t5,
$t6, $t7
- No MIPS, estas posições só são acessadas por instruções de transferência de dados.
- O MIPS endereça byte, de modo que endereços de palavras consecutivas diferem de 4 unidades.
- A memória armazena estruturas de dados, como arrays, além dos registradores derramados.
C. LINGUAGEM DE MONTAGEM DO MIPS
Tabela 2: Tabela de Instruções na Linguagem de Montagem
Categoria Instrução Exemplo Significado Comentários
Aritmética
add add $s1, $s2, $s3 $s1 = $s2 + $s3 Três operandos
Dados em registradoressubtract sub $s1, $s2, $s3 $s1 = $s2 – $s3
Transferencia de dados
load word lw $s1, 100($s2) $s1 = memória[$s2 + 100] Dados transferidos da
memória para registradoresstore word sw $s1, 100($s2) memória[$s2 + 100] = $s1
Desvio Condicional
branch on equal beq $s1, $s2, L se ($s1 == $s2) desvia para L
Testar a igualdade e desviar
se verdadeira
branch on not equal bne $s1, $s2, L se ($s1 != $s2) desvia para L
Testar a desigualdade e
desviar se verdadeira
set on less than slt $s1, $s2, $s3
se ($s2 < $s3)
então $s1 = 1;
senão $s1 = 0
Compare se menor ou igual
Usada junto a BEQ e BNE
Desvio Incondicional
jump j 2500 Desvia para 10000 Desviar para o endereço-alvo
jump register jr $t1 Desvia para $s1 Para comandos switch
D. LINGUAGEM DE MÁQUINA DO MIPS
Tabela 3: Tabela de Instruções em Linguagem 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)
Arquitetura de Computadores
Ciência da Computação
Engenharia de Computação
19
beq I 4 17 18 25 Beq $s1, $s2, 100  divide por quatro
bne I 5 17 18 25 Bne $s1, $s2, 100  divide por quatro
slt R 0 18 19 17 0 42 Slt $s1, $s2, $s3
j J 2 2500 j 10000  multiplica por quatro
jr R 0 9 0 0 0 8 jr $t1
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 intruções de transferência de
dados
Formato J J op Endereço-alvo Formato das intruções de desvio incondicional
E. TABELA DE CONVERSÃO BINÁRIA
Tabela 4: Tabela de código binário dos registradores
Nome do
registrador
Número do
registrador
Binário correspondente em 5 bits
16 8 4 2 1
$s0 16 1 0 0 0 0
$s1 17 1 0 0 0 1
$s2 18 1 0 0 1 0
$s3 19 1 0 0 1 1
$s4 20 1 0 1 0 0
$s5 21 1 0 1 0 1
$s6 22 1 0 1 1 0
$s7 23 1 0 1 1 1
$t0 8 0 1 0 0 0
$t1 9 0 1 0 0 1
$t2 10 0 1 0 1 0
$t3 11 0 1 0 1 1
$t4 12 0 1 1 0 0
$t5 13 0 1 1 0 1
$t6 14 0 1 1 1 0
$t7 15 0 1 1 1 1
Tabela 5: Tabela de código binário das instruções
Operação Número Decimal Número Binário em 6 Bits
ADD 32 100 000
SUB 34 100 010
OR 36 100 100
AND 37 100 101
SLT 42 101 010
BNE 4 000 100
BEQ 5 000 101
J 2 000 010
JR 8 001 000
LW 35 100 011
SW 43 101 011
E. EXERCÍCIOS

Weitere ähnliche Inhalte

Was ist angesagt?

Chave seccionadora, Sensor indutivo e Relé temporizador
Chave seccionadora, Sensor indutivo e Relé temporizadorChave seccionadora, Sensor indutivo e Relé temporizador
Chave seccionadora, Sensor indutivo e Relé temporizadorJoão Vitor Pereira Mendes
 
Simbologia para instrumentação
Simbologia para instrumentaçãoSimbologia para instrumentação
Simbologia para instrumentaçãophasetronik
 
Abordagem da Administração
Abordagem da AdministraçãoAbordagem da Administração
Abordagem da AdministraçãoNome Sobrenome
 
Aula 01 automação e controle
Aula 01   automação e controleAula 01   automação e controle
Aula 01 automação e controleJorge Alves
 
PBD Select e restrições para Select
PBD Select e restrições para SelectPBD Select e restrições para Select
PBD Select e restrições para SelectElaine Cecília Gatto
 
Apostila Rsolvida de desenho tecnico
Apostila Rsolvida de desenho tecnicoApostila Rsolvida de desenho tecnico
Apostila Rsolvida de desenho tecnicoNome Sobrenome
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em pptAndrei Bastos
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Karoline Tavares
 
TIC - Conceitos Básicos
TIC - Conceitos BásicosTIC - Conceitos Básicos
TIC - Conceitos BásicosAntonio Semedo
 
Aps lista de exercícios
Aps lista de exercíciosAps lista de exercícios
Aps lista de exercíciosGuilherme
 
Lógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoLógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoWesley R. Bezerra
 
Aula - CLP & Linguagem Ladder
Aula - CLP & Linguagem LadderAula - CLP & Linguagem Ladder
Aula - CLP & Linguagem LadderAnderson Pontes
 
Trabalho de Sistema de Abastecimento de Água
Trabalho de Sistema de Abastecimento de ÁguaTrabalho de Sistema de Abastecimento de Água
Trabalho de Sistema de Abastecimento de ÁguaGabriela Almeida
 

Was ist angesagt? (20)

Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Chave seccionadora, Sensor indutivo e Relé temporizador
Chave seccionadora, Sensor indutivo e Relé temporizadorChave seccionadora, Sensor indutivo e Relé temporizador
Chave seccionadora, Sensor indutivo e Relé temporizador
 
Simbologia para instrumentação
Simbologia para instrumentaçãoSimbologia para instrumentação
Simbologia para instrumentação
 
Abordagem da Administração
Abordagem da AdministraçãoAbordagem da Administração
Abordagem da Administração
 
Aula 01 automação e controle
Aula 01   automação e controleAula 01   automação e controle
Aula 01 automação e controle
 
PBD Select e restrições para Select
PBD Select e restrições para SelectPBD Select e restrições para Select
PBD Select e restrições para Select
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Apostila Rsolvida de desenho tecnico
Apostila Rsolvida de desenho tecnicoApostila Rsolvida de desenho tecnico
Apostila Rsolvida de desenho tecnico
 
Linguagem C - Strings
Linguagem C - StringsLinguagem C - Strings
Linguagem C - Strings
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em ppt
 
Amplificadores operacionais
Amplificadores operacionaisAmplificadores operacionais
Amplificadores operacionais
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
TIC - Conceitos Básicos
TIC - Conceitos BásicosTIC - Conceitos Básicos
TIC - Conceitos Básicos
 
Aps lista de exercícios
Aps lista de exercíciosAps lista de exercícios
Aps lista de exercícios
 
Lógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoLógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetição
 
Aula - CLP & Linguagem Ladder
Aula - CLP & Linguagem LadderAula - CLP & Linguagem Ladder
Aula - CLP & Linguagem Ladder
 
Trabalho de Sistema de Abastecimento de Água
Trabalho de Sistema de Abastecimento de ÁguaTrabalho de Sistema de Abastecimento de Água
Trabalho de Sistema de Abastecimento de Água
 

Andere mochten auch

Conjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoConjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoElaine Cecília Gatto
 
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
 
03 mips assembly language
03 mips assembly language03 mips assembly language
03 mips assembly languageMuberra Duman
 
MIPS Assembly Language I
MIPS Assembly Language IMIPS Assembly Language I
MIPS Assembly Language ILiEdo
 
Chapter 2 instructions language of the computer
Chapter 2 instructions language of the computerChapter 2 instructions language of the computer
Chapter 2 instructions language of the computerBATMUNHMUNHZAYA
 
Aula 2 - Assembly - 8051
Aula 2 - Assembly - 8051Aula 2 - Assembly - 8051
Aula 2 - Assembly - 8051Thiago Oliveira
 
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
 
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasFelipe J. R. Vieira
 
Seminário: JavaScript
Seminário: JavaScriptSeminário: JavaScript
Seminário: JavaScriptIvna Valença
 

Andere mochten auch (20)

Conjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoConjunto de instruções mips - introdução
Conjunto de instruções mips - introdução
 
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
 
SQL
SQLSQL
SQL
 
Guia rápido mips (1)
Guia rápido mips (1)Guia rápido mips (1)
Guia rápido mips (1)
 
03 mips assembly language
03 mips assembly language03 mips assembly language
03 mips assembly language
 
MIPS Assembly Language I
MIPS Assembly Language IMIPS Assembly Language I
MIPS Assembly Language I
 
Chapter 2 instructions language of the computer
Chapter 2 instructions language of the computerChapter 2 instructions language of the computer
Chapter 2 instructions language of the computer
 
Ruby
RubyRuby
Ruby
 
Seminário: C++
Seminário: C++Seminário: C++
Seminário: C++
 
Seminário: Delphi
Seminário: DelphiSeminário: Delphi
Seminário: Delphi
 
Pascal
PascalPascal
Pascal
 
Seminário: Lisp
Seminário: LispSeminário: Lisp
Seminário: Lisp
 
Phyton
PhytonPhyton
Phyton
 
Aula 2 - Assembly - 8051
Aula 2 - Assembly - 8051Aula 2 - Assembly - 8051
Aula 2 - Assembly - 8051
 
Seminário: C#
Seminário: C#Seminário: C#
Seminário: C#
 
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
 
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
 
Seminário: JavaScript
Seminário: JavaScriptSeminário: JavaScript
Seminário: JavaScript
 

Ähnlich wie MIPS 32 bits: arquitetura e instruções

Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosRegis Magalhães
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonDiogo Gomes
 
MATEMÁTICA- FUNÇÕES - AULA 1
MATEMÁTICA-   FUNÇÕES - AULA 1MATEMÁTICA-   FUNÇÕES - AULA 1
MATEMÁTICA- FUNÇÕES - AULA 1Alexander Mayer
 
Programação Estruturada 2 - Aula 02 - Código Fonte
Programação Estruturada 2 - Aula 02 - Código FonteProgramação Estruturada 2 - Aula 02 - Código Fonte
Programação Estruturada 2 - Aula 02 - Código Fontethomasdacosta
 
Aula de autocad
Aula de autocadAula de autocad
Aula de autocadfaogoes
 
Curso de ShellScript - Lm09 shellscript9
Curso de ShellScript - Lm09 shellscript9Curso de ShellScript - Lm09 shellscript9
Curso de ShellScript - Lm09 shellscript9Pessoal
 
14 algoritmos de classificacao de tabelas
14   algoritmos de classificacao de tabelas14   algoritmos de classificacao de tabelas
14 algoritmos de classificacao de tabelasRicardo Bolanho
 
Manual 2 Excel.pdf
Manual 2 Excel.pdfManual 2 Excel.pdf
Manual 2 Excel.pdfssuser7bf558
 
Introdução a programação com Python (para jornalistas)
Introdução a programação com Python (para jornalistas)Introdução a programação com Python (para jornalistas)
Introdução a programação com Python (para jornalistas)Álvaro Justen
 
Mini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoMini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoFabricio NErdmann
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonFlávio Ribeiro
 

Ähnlich wie MIPS 32 bits: arquitetura e instruções (20)

Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Le02 asd
Le02 asdLe02 asd
Le02 asd
 
ARDUINO PRIMEIROS PASSOS
ARDUINO  PRIMEIROS PASSOSARDUINO  PRIMEIROS PASSOS
ARDUINO PRIMEIROS PASSOS
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
MATEMÁTICA- FUNÇÕES - AULA 1
MATEMÁTICA-   FUNÇÕES - AULA 1MATEMÁTICA-   FUNÇÕES - AULA 1
MATEMÁTICA- FUNÇÕES - AULA 1
 
Programação Estruturada 2 - Aula 02 - Código Fonte
Programação Estruturada 2 - Aula 02 - Código FonteProgramação Estruturada 2 - Aula 02 - Código Fonte
Programação Estruturada 2 - Aula 02 - Código Fonte
 
Aula de autocad
Aula de autocadAula de autocad
Aula de autocad
 
Aula autocad
Aula autocadAula autocad
Aula autocad
 
Sistemas numericos
Sistemas numericosSistemas numericos
Sistemas numericos
 
Curso de ShellScript - Lm09 shellscript9
Curso de ShellScript - Lm09 shellscript9Curso de ShellScript - Lm09 shellscript9
Curso de ShellScript - Lm09 shellscript9
 
Programação em C
Programação em CProgramação em C
Programação em C
 
14 algoritmos de classificacao de tabelas
14   algoritmos de classificacao de tabelas14   algoritmos de classificacao de tabelas
14 algoritmos de classificacao de tabelas
 
Introdução a plataforma arduino
Introdução a plataforma arduinoIntrodução a plataforma arduino
Introdução a plataforma arduino
 
Manual 2 Excel.pdf
Manual 2 Excel.pdfManual 2 Excel.pdf
Manual 2 Excel.pdf
 
Introdução a programação com Python (para jornalistas)
Introdução a programação com Python (para jornalistas)Introdução a programação com Python (para jornalistas)
Introdução a programação com Python (para jornalistas)
 
Mini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoMini Curso de Python para Coding Dojo
Mini Curso de Python para Coding Dojo
 
Aula1.pdf
Aula1.pdfAula1.pdf
Aula1.pdf
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
 
Pro2 03p
Pro2 03pPro2 03p
Pro2 03p
 

Mehr von 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
 
Exploring label correlations for partitioning the label space in multi label ...
Exploring label correlations for partitioning the label space in multi label ...Exploring label correlations for partitioning the label space in multi label ...
Exploring label correlations for partitioning the label space in multi label ...Elaine Cecília Gatto
 

Mehr von 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
 
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
 
Exploring label correlations for partitioning the label space in multi label ...
Exploring label correlations for partitioning the label space in multi label ...Exploring label correlations for partitioning the label space in multi label ...
Exploring label correlations for partitioning the label space in multi label ...
 

Kürzlich hochgeladen

Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasCasa Ciências
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxLuizHenriquedeAlmeid6
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasillucasp132400
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERDeiciane Chaves
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADOcarolinacespedes23
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...ArianeLima50
 
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaJúlio Sandes
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 

Kürzlich hochgeladen (20)

Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de Partículas
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasil
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
 
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 

MIPS 32 bits: arquitetura e instruções

  • 1. MIPS 32 BITS DISCIPLINA DE ARQUITETURA DE COMPUTADORES CURSOS DE BACHARELADO EM ENGENHARIA DE COMPUTAÇÃO E CIÊNCIA DA COMPUTAÇÃO Bauru-SP 2015
  • 2. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 2 LISTA DE TABELAS Tabela 1: Tabela de Operandos do MIPS....................................................................................................18 Tabela 2: Tabela de Instruções na Linguagem de Montagem .....................................................................18 Tabela 3: Tabela de Instruções em Linguagem de Máquina .......................................................................18 Tabela 4: Tabela de código binário dos registradores .................................................................................19 Tabela 5: Tabela de código binário das instruções......................................................................................19
  • 3. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 3 SUMÁRIO A. RESUMO EXERCÍCIOS MIPS...............................................................................................................4 1. Compilação de um comando de atribuição............................................................................................4 2. Compilação de uma atribuição com um operando na memória ............................................................4 3. Compilação usando instruções de LOAD WORD e STORE WORD...................................................5 4. Compilação usando uma variável para indexar o ARRAY...................................................................6 5. Compilação de um comando IF em uma instrução de DESVIO CONDICIONAL ..............................7 6. Compilação de um comando IF-THEN-ELSE em DESVIOS CONDICIONAIS ................................8 7. Compilação de um LOOP contendo um ARRAY com índice variável ................................................9 8. Compilação de um LOOP WHILE......................................................................................................11 9. Compilação do Teste LESS THAN.....................................................................................................12 10. Compilação de um comando SWITCH a partir de uma tabela de endereços de DESVIO ...............14 B. OPERANDOS DO MIPS........................................................................................................................18 C. LINGUAGEM DE MONTAGEM DO MIPS ........................................................................................18 D. LINGUAGEM DE MÁQUINA DO MIPS ............................................................................................18 E. TABELA DE CONVERSÃO BINÁRIA................................................................................................19 E. EXERCÍCIOS .........................................................................................................................................19
  • 4. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 4 A. RESUMO EXERCÍCIOS MIPS 1. Compilação de um comando de atribuição a) Instrução f = (g + h) – (i + j); F = $s0, G = $s1, H = $s2, I = $s3, J = $s4 b) Linguagem de montagem ADD $t0, $s1, $s2 ADD $t1, $s3, $s4 SUB $s0, $t0, $t1 c) Linguagem de máquina ADD $8, $17, $18 ADD $9, $19, $20 SUB $16, $8, $9 d) Representação das instruções (Consultar as tabelas 3, 4 e 5 para fazer a representação) TIPO INSTRUÇÃO REPRESENTAÇÃO R ADD $t0, $s1, $s2 0 $s1 $s2 $t0 0 32 R ADD $t1, $s3, $s4 0 $s3 $s4 $t1 0 32 R SUB $s0, $t0, $t1 0 $t0 $t1 $s0 0 34 TIPO INSTRUÇÃO REPRESENTAÇÃO R ADD $8, $17, $18 0 $17 $18 $8 0 32 R ADD $9, $19, $20 0 $19 $20 $9 0 32 R SUB $16, $8, $9 0 $8 $9 $16 0 34 e) Código de Máquina TIPO INSTRUÇÃO REPRESENTAÇÃO R ADD $t0, $s1, $s2 000000 10001 10010 01000 00000 100000 R ADD $t1, $s3, $s4 000000 10011 10100 01001 00000 100000 R SUB $s0, $t0, $t1 000000 01000 01001 10000 00000 100010 2. Compilação de uma atribuição com um operando na memória a) Instrução g = h + a[8]; G = $s0, H = $s1, A = $s2
  • 5. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 5 b) Linguagem de montagem lw $t0, 8 ($s3) add $s1, $s2, $t0 c) Linguagem de máquina lw $8, 8 ($19) add $16, $17, $8 d) Representação das instruções (Consultar as tabelas 3, 4 e 5 para fazer a representação) TIPO INSTRUÇÃO REPRESENTAÇÃO R lw $t0, 8($s3) 35 $t0 $s3 8 I add $s1, $s2, $t0 0 $s2 $t0 $s1 0 32 TIPO INSTRUÇÃO REPRESENTAÇÃO R lw $8, 8($19) 35 $8 $19 8 I add $16, $17, $8 0 $17 $8 $16 0 32 e) Código de Máquina TIPO INSTRUÇÃO REPRESENTAÇÃO R lw $t0, 8($s3) 100011 010000 10011 0000 0000 0000 1000 I add $s1, $s2, $t0 000000 10001 01000 10000 00000 100000 3. Compilação usando instruções de LOAD WORD e STORE WORD a) Instrução a[12] = h + a[8]; A = $s0, H = $s1 b) Linguagem de montagem lw $t0, 32($s0) add $t0, $s1, $t0 sw $t0, 48($s0) c) Linguagem de máquina lw $t0, 32($s0) add $t0, $s1, $t0 sw $t0, 48($s0) d) Representação das instruções (Consultar as tabelas 3, 4 e 5 para fazer a representação)
  • 6. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 6 TIPO INSTRUÇÃO REPRESENTAÇÃO I lw $t0, 32($s0) 35 $t0 $s0 32 R add $t0, $s1, $t0 0 $t0 $s1 $t0 0 32 I sw $t0, 48($s0) 43 $t0 $s0 48 TIPO INSTRUÇÃO REPRESENTAÇÃO I lw $8, 32($16) 35 8 16 32 R add $8, $17, $8 0 8 17 8 0 32 I sw $8, 48($16) 43 8 16 48 e) Código de Máquina TIPO INSTRUÇÃO REPRESENTAÇÃO I lw $t0, 32($s0) 100011 01000 10000 0000 0000 0010 0000 R add $t0, $s1, $t0 000000 01000 10001 01000 00000 100000 I sw $t0, 48($s0) 101011 01000 10000 0000 0000 0011 0000 4. Compilação usando uma variável para indexar o ARRAY a) Instrução g = h + a[i]; G = $s0, H = $s1, A = $s2, I = $s3 b) Linguagem de montagem add $t0, $s3, $s3 #2*i add $t0, $t0, $t0 #4*i add $t0, $t0, $s2 #a[i]=(4*i+$s2) lw $t1,0($t0) #$t1=a[i] add $s0, $s1, $t1 #g=h+a[i] c) Linguagem de máquina add $8, $19, $19 #2*i add $8, $8, $8 #4*i add $8, $8, $18 #a[i]=(4*i+$s2) lw $9,0($8) #$t1=a[i] add $16, $17, $9 #g=h+a[i] d) Representação das instruções (Consultar as tabelas 3, 4 e 5 para fazer a representação) TIPO INSTRUÇÃO REPRESENTAÇÃO R add $t0, $s3, $s3 0 $s3 $s3 $t0 0 32 R add $t0, $t0, $t0 0 $t0 $t0 $t0 0 32 R add $t0, $t0, $s2 0 $t0 $t0 $s2 0 32 I lw $t1,0($t0) 35 $t1 $t0 0 R add $s0, $s1, $t1 0 $s1 $t1 $s0 0 32
  • 7. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 7 TIPO INSTRUÇÃO REPRESENTAÇÃO R add $8, $19, $19 0 $19 $19 $8 0 32 R add $8, $8, $8 0 $8 $8 $8 0 32 R add $8, $8, $18 0 $8 $18 $8 0 32 I lw $9,0($8) 35 $9 $8 0 R add $16, $17, $9 0 $17 $9 $16 0 32 e) Código de Máquina TIPO INSTRUÇÃO REPRESENTAÇÃO R add $t0, $s3, $s3 R add $t0, $t0, $t0 R add $t0, $t0, $s2 I lw $t1,0($t0) R add $s0, $s1, $t1 5. Compilação de um comando IF em uma instrução de DESVIO CONDICIONAL FORMATO DA INSTRUÇÃO BEQ (branch on equal – desvie se igual): BEQ registrador1, registrador2, endereço de desvio. Código da operação (6bits) Registrador1 (5 bits) Registrador2 (5 bits) Endereço de desvio (16 bits) FUNÇÃO: força um desvio para o comando com o LABEL se o valor no registrador1 for igual ao valor no registrador2. a) Instrução if(i==j) go to L1; f = g + h; L1: f = f - i; f = $s0; g = $s1; h = $s2; i = $s3; j = $s4 b) Linguagem de montagem beq $s3, $s4, L1 #desvia para L1 se i = j add $s0, $s1, $s2 #f=g+h (não executa esta instrução se i=j) L1: sub $s0, $s0, $s3 #f=f-i (sempre executa) c) Linguagem de máquina beq $19, $20, L1 #desvia para L1 se i = j add $16, $s17 $18 #f=g+h (não executa esta instrução se i=j) L1: sub $16, $16, $19 #f=f-i (sempre executa)
  • 8. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 8 d) Representação das instruções END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO 80000 I beq $s3, $s4, L1 4 $s3 $s4 L1: 80008 - 80000 = 8 / 4 = 2 80004 R add $s0, $s1, $s2 0 $s1 $s2 $s0 0 32 80008 R L1: sub $s0, $s0, $s3 0 $s0 $s3 $s0 0 34 END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO 80000 I beq $s3, $s4, L1 4 $19 $20 2 80004 R add $s0, $s1, $s2 0 $17 $18 $16 0 32 80008 R L1: sub $s0, $s0, $s3 0 $16 $19 $16 0 34 e) Código de Máquina (preencher com o número binário correspondente) END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO 80000 I beq $s3, $s4, L1 80004 R add $s0, $s1, $s2 80008 R L1: sub $s0, $s0, $s3 6. Compilação de um comando IF-THEN-ELSE em DESVIOS CONDICIONAIS FORMATO DA INSTRUÇÃO BNE (branch not on equal): BNE registrador1, registrador2, endereço de desvio. Código da operação (6bits) = 5 Registrador1 (5 bits) Registrador2 (5 bits) Endereço de desvio (16 bits) FUNÇÃO: a próxima instrução a ser executada é aquela que estiver armazenada no endereço do LABEL se o valor no registrador 1 for diferente do valor no registrador 2 a) Instrução if( i == j ) f = g + h; else f = g – h; f = $s0; g = $s1; h = $s2; i = $s3; j = $s4 b) Linguagem de montagem bne $s3, $s4, Else # desvia para ELSE se I < > j add $s0, $s1, $s2 # f = g + h (salta esta instrução se i <> k j Exit # desvia para exit Else: sub $s0, $s1, $s2 # f = g – h (salta esta instrução se i = j Exit: c) Linguagem de máquina bne $19, $20, Else # desvia para ELSE se I < > j add $16, $17, $18 # f = g + h (salta esta instrução se i <> k
  • 9. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 9 j Exit # desvia para exit Else: sub $16, $17, $18 # f = g – h (salta esta instrução se i = j Exit: d) Representação das instruções END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO 80000 I bne $s3, $s4, Else 5 $s3 $s4 80012 80004 R add $s0, $s1, $s2 0 $s1 $s2 $s0 0 32 80008 J j Exit 2 80016 80012 I ELSE: sub $s0, $s1, $s2 0 $s1 $s3 $s0 0 34 80016 Exit: Usamos o PC para calcular o endereço relativo da memória:  Pegar o endereço da instrução seguinte à instrução corrente que contém o LABEL, portanto, 80.004  Somar o endereço com 8, portanto, 80.004 + 8 = 80.012  Portanto, o valor que devemos colocar para ELSE é o número 8 END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO 80000 I bne $19, $20, Else 5 $19 $20 8 80004 R add $16, $17, $18 0 $16 $17 $18 0 32 80008 J j Exit 2 80.016 80012 I ELSE: sub $16, $17, $18 0 $17 $18 $16 0 34 80016 EXIT: Para J EXIT usar o próprio endereço 80.016 que pode ser representado em 26 bits (00 0000 0001 0011 1000 1001 0000) e) Código de Máquina TIPO INSTRUÇÃO REPRESENTAÇÃO I bne $19, $20, Else 000101 10011 10100 R add $16, $17, $18 000000 10000 10001 10010 00000 100000 J j Exit 000010 00 0000 0001 0011 1000 1001 0000 I sub $16, $17, $18 000000 10001 10010 10000 00000 100010 7. Compilação de um LOOP contendo um ARRAY com índice variável a) Instrução Loop: g = g + A[i]; i = i + j; if( i != h ) go to Loop; g = $s1; h = $s2; i = $s3; j = $s4; A = $s5 b) Linguagem de montagem Loop: add $t1, $s3, $s3 # $T1 = 2 * i add $t1, $t1, $t1 # $T1 = 4 * i add $t1, $t1, $s5 # $T1 = A[i]
  • 10. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 10 lw $t0, 0($t1) # $T0 = A[i] add $s1, $s1, $t0 # G = G + A[I] add $s3, $s3, $s4 # I = I + J bne $s3, $s2, Loop # desvia para LOOP se i < > h c) Linguagem de máquina Loop: add $9, $19, $19 # $T1 = 2 * i add $9, $9, $9 # $T1 = 4 * i add $9, $9, $21 # $T1 = A[i] lw $8, 0($9) # $T0 = A[i] add $17, $17, $8 # G = G + A[I] add $19, $19, $20 # I = I + J bne $19, $18, Loop # desvia para LOOP se i < > h d) Representação das instruções END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO 8 0000 R Loop: add $t1, $s3, $s3 0 $s3 $s3 $t1 0 32 8 0004 R add $t1, $t1, $t1 0 $t1 $t1 $t1 0 32 8 0008 R add $t1, $t1, $s5 0 $t1 $s5 $t1 0 32 8 0012 I lw $t0, 0($t1) 43 $t1 $t0 0 8 0016 R add $s1, $s1, $t0 0 $s1 $t0 $s1 0 32 8 0020 R add $s3, $s3, $s4 0 $s3 $s4 $s3 0 32 8 0024 I bne $s3, $s2, Loop 5 $s3 $s2 Loop (8 0000) END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO 8 0000 R add $9, $19, $19 0 $19 $19 $9 0 32 8 0004 R add $9, $9, $9 0 $9 $9 $9 0 32 8 0008 R add $9, $9, $21 0 $9 $21 $9 0 32 8 0012 I lw $8, 0($9) 43 $8 $9 0 8 0016 R add $17, $17, $8 0 $17 $8 $17 0 32 8 0020 R add $19, $19, $20 0 $19 $20 $19 0 32 8 0024 I bne $19, $18, Loop 5 $19 $18 LOOP (-24: 8 0000) -24 POIS: 80000 - 80024 = -24. Precisa voltar pra 80000, portanto é necessário fazer PC + (-X) = PC É 80024. e) Código de Máquina END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO 80000 R add $9, $19, $19 000000 80004 R add $9, $9, $9 000000 80008 R add $9, $9, $21 000000 80012 I lw $8, 0($9) 80016 R add $17, $17, $8 000000 80020 R add $19, $19, $20 000000 80024 I bne $19, $18, Loop
  • 11. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 11 8. Compilação de um LOOP WHILE a) Instrução: While( save[i] == k ) i = i +j; b) Linguagem de montagem Loop: add $t1, $s3, $s3 # T1 = 2 * i add $t1, $t1, $t1 # T1 = 4 * i add $t1, $t1, $s6 # T1 = save[i] lw $t0, 0($t1) # T0 = save[i] bne $t0, $s5, Exit # desvia para EXIT se save[i] < > K add $s3, $s3, $s4 # i = i + j j Loop # desvia para Loop Exit; c) Linguagem de máquina Loop: add $9, $19, $19 # T1 = 2 * i add $9, $9, $9 # T1 = 4 * i add $9, $9, $s6 # T1 = save[i] lw $8, 0($9) # T0 = save[i] bne $8, $21, Exit # desvia para EXIT se save[i] < > K add $19, $19, $20 # i = i + j j Loop # desvia para Loop Exit; d) Representação das instruções END. MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO 80000 R Loop: add $t1, $s3, $s3 0 $s3 $s3 $t1 0 32 80004 R add $t1, $t1, $t1 0 $t1 $t1 $t1 0 32 80008 R add $t1, $t1, $s6 0 $t1 $s6 $t1 0 32 80012 I lw $t0, 0($t1) 43 $t1 $t0 0 80016 I bne $t0, $s5, Exit 5 $t0 $s5 8 80020 R add $s3, $s3, $s4 0 $s3 $s4 $s3 0 32 80024 J j Loop 2 80000 80028 EXIT END.MEM. TIPO INSTRUÇÃO REPRESENTAÇÃO 80000 R Loop: add $9, $19, $19 0 $19 $19 $9 0 32 80004 R add $9, $9, $9 0 $9 $9 $9 0 32 80008 R add $9, $9, $s6 0 $9 $6 $9 0 32 80012 I lw $8, 0($9) 43 $9 $8 0 80016 I bne $8, $21, Exit 5 $8 $21 8 80020 R add $19, $19, $20 0 $19 $19 $20 0 32 80024 J j Loop 2 -24
  • 12. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 12 80.020 + 8 = 80.028  EXIT: Conteudo do registrador + campo do endereço (cálculo feito pela instrução de desvio condicional)  *2 = duas instruções de distância  PC = registrador que contém o valor da instrução corrente  Desvios condicionais tendem a desviar para uma instrução próxima  Quase metade de todos os desvios condicionais é para endereços situados a menos de 16 INSTRUÇÕES da origem do desvio.  ENDEREÇO RELATIVO AO PC = endereço relativo à instrução seguinte e não à corrente  PC + 4 e) Código de Máquina Formato Instrução Representação R add $9, $19, $19 000000 10011 10011 1001 00000 100000 R add $9, $9, $9 000000 01001 1001 1001 00000 100000 R add $9, $9, $s6 000000 01001 110 1001 00000 100000 I lw $8, 0($9) 101011 01001 1000 0000 0000 0000 0000 I bne $8, $21, Exit 000101 01000 10101 R add $19, $19, $20 000000 10011 10011 10100 00000 100000 J j Loop 000010 11 1111 1111 1111 1111 1110 1000 9. Compilação do Teste LESS THAN FORMATO DA INSTRUÇÃO SLT (set on less than): SLT registrador temporário, registrador1, registrador2. Código da operação (6bits) = 0 Registrador a ser comparado 1 (5 bits) Registrador a ser comparado 2 (5 bits) Registrador temporário (5 bits) Shamt (0 - 5 bits) Código da operação aritmética (6 bits) = 42 FUNÇÃO: compara dois valores de dois registradores diferentes e atribui o valor 1 a um terceiro registrador se o valor do primeiro registrador for menor que o valor do segundo registrador. Caso contrário, atribui zero. a) Instrução: Qual o código MIPS necessário para testar se uma variável A, correspondente ao registrador $S0, é menor que outra variável B (registrador $S1) e desviar para o LABEL LESS se a condição for verdadeira? b) Linguagem de montagem slt $t0, $s0, $s1 # T0 = 1 se $s0 < $s1 (se a < b) bne $t0, $zero, Less # desvia para Less se $t0<>0
  • 13. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 13 c) Linguagem de máquina slt $8, $16, $s17 # T0 = 1 se $s0 < $s1 (se a < b) bne $8, $0, Less # desvia para Less se $t0<>0 d) Representação das instruções Formato Instrução Representação R slt $t0, $s0, $s1 0 $s0 $s1 $t0 0 42 I bne $t0, $zero, Less 5 $t0 $zero Less Formato Instrução Representação R slt $8, $16, $17 0 $16 $17 $8 0 42 I bne $8, $zero, Less 5 $8 $zero Less e) Código de Máquina Formato Instrução Representação R slt $8, $16, $17 000000 10000 10001 01000 00000 101010 I bne $8, $0, Less 000101 01000 00000 Less EXEMPLO: a) Instrução: if ( i < j ) a = b + c; else a = b – c; a = $s0, b = $s1, c = $s2, i = $s3, j = $s4 b) Linguagem de Montagem slt $t0, $s3, $s4 # T0 = 1 se ($s0 < $s1), isto é se (a < b). T0 = 0 se ($s0 > $s1), isto é se (a > b) bne $t0, $zero, ELSE # se ($t0<>0) desvia para ELSE, caso contrário executa a instrução seguinte add $s0, $s1, $s2 # a = b + c; (se $t0 <> 0) j Exit # desvia para exit ELSE: sub $s0, $s3, $s4 # a = b – c; (se $t0 = 0) Exit: c) Linguagem de Máuina slt $t0, $s3, $s4 bne $t0, $zero, ELSE
  • 14. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 14 add $s0, $s1, $s2 j Exit ELSE: sub $s0, $s3, $s4 Exit: d) Representação das instruções Endereço M. Formato Instrução Representação 80000 R slt $t0, $s3, $s4 0 $s3 $s4 $t0 0 42 80004 I bne $t0, $zero, ELSE 5 $t0 $zero ELSE 80008 R add $s0, $s1, $s2 0 $s1 $s2 $s0 0 32 80012 J j Exit 2 EXIT 80016 R ELSE: sub $s0, $s3, $s4 0 $s0 $s3 $s4 0 34 80020 Exit: Endereço M. Formato Instrução Representação 80000 R slt $8, $19, $20 0 $19 $20 $8 0 42 80004 I bne $8, $zero, ELSE 5 $8 $zero ELSE 80008 R add $16, $17, $18 0 $17 $18 $16 0 32 80012 J j Exit 2 EXIT 80016 R ELSE: sub $16, $19, $20 0 $19 $20 $16 0 34 80020 Exit e) Código de máquina Formato Instrução Representação R slt $t0, $s3, $s4 I bne $t0, $zero, ELSE R add $s0, $s1, $s2 J j Exit R ELSE: sub $s0, $s3, $s4 Exit: 10. Compilação de um comando SWITCH a partir de uma tabela de endereços de DESVIO a) Instrução: Switch (k) { case 0: f = i + j; // k = 0 break; case 1: f = g + h; // k=1 break; case 2: f = g – h; // k = 2 break;
  • 15. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 15 case 3: f = i – j; // k = 3 break; } b) Linguagem de montagem ### - A variável K do comando SWITCH será usada para indexar uma tabela de endereços de desvio, para então desviar com base no valor carregado. - Primeiro o valor de K é testado para ter certeza de que ele é igual a um dos valores do comando case (entre 0 e 1). - Se não for verdade, o programa ABANDONA o comando SWITCH ### slt $t3, $s5, $zero # testa se K < 0 bne $t3, $zero, Exit # se K < 0 desvia para EXIT slt $t3, $s5, $t2 # testa se K < 4 beq $t3, $zero, Exit # se K >= 4 desvia para EXIT # Primeiro precisamos multiplicar o valor de K por 4 para transformá-lo em um endereço de BYTE add $t1, $s5, $s5 # T1 = 2 * K add $t1, $t1, $t1 # T1 = 4 * K ### Suponha que quarto palavras consecutivas na memória tenham endereços correspondentes aos labels L0, L1, L2 e L3, começando no endereço armazenado em $T4. O endereço do desvio pode ser carregado em um registrador, neste caso $T0 ### add $t1, $t1, $t4 # T1 = endereço de JumpTable[K] lw $t0, 0($t1) # T0 = JumpTable[K]
  • 16. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 16 # A execução de uma instrução de desvio para o conteúdo de um registrador faz com que o programa passe a executar a instrução apontada na tabela de endereços de desvio jr $t0 # desvia com base no conteúdo de $T0 # Traduzindo os CASOS L0: add $s0, $s3, $s4 # K = 0  f = i + j j Exit # fim deste case, desvia para EXIT L1: add $s0, $s1, $s2 # K = 1  f = g + h j Exit # fim deste case, desvia para EXIT L2: sub $s0, $s1, $s2 # K = 2  f = g - h j Exit # fim deste case, desvia para EXIT ### - No último case podemos eliminar o desvio para a saída do comando SWITCH, pois as instruções deste case são as últimas do switch. - No entanto, um LABEL EXIT deve ser pendurado depois do último comando deste case para marcar o final do comando switch. ### L3: sub $s0, $s3, $s4 # K = 3  f = i – j Exit # fim do switch c) Linguagem de máquina slt $11, $21, $zero # testa se K < 0 bne $11, $zero, Exit # se K < 0 desvia para EXIT slt $11, $21, $10 # testa se K < 4 beq $11, $zero, Exit # se K >= 4 desvia para EXIT add $9, $21, $21 # T1 = 2 * K add $9, $9, $9 # T1 = 4 * K add $9, $9, $12 # T1 = endereço de JumpTable[K] lw $8, 0($9) # T0 = JumpTable[K] jr $8 # desvia com base no conteúdo de $T0 L0: add $16, $19, $20 # K = 0  f = i + j j Exit # fim deste case, desvia para EXIT L1: add $16, $17, $18 # K = 1  f = g + h j Exit # fim deste case, desvia para EXIT
  • 17. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 17 L2: sub $16, $17, $18 # K = 2  f = g - h j Exit # fim deste case, desvia para EXIT L3: sub $16, $19, $20 # K = 3  f = i – j Exit # fim do switch d) Representação das instruções REPRESENTAÇÃO DA LINGUAGEM DE MONTAGEM Endereço M. Formato Instrução Representação 80000 R slt $t3, $s5, $zero 0 $s5 $zero $t3 0 42 80004 I bne $t3, $zero, Exit 5 $t3 $zero 80064 80008 R slt $t3, $s5, $t2 0 $s5 $t2 $t3 0 42 80012 I beq $t3, $zero, Exit 4 $t3 $zero 80064 80016 R add $t1, $s5, $s5 0 $s5 $s5 $t1 0 32 80020 R add $t1, $t1, $t1 0 $t1 $t1 $t1 0 32 80024 R add $t1, $t1, $t4 0 $t1 $t4 $t1 0 32 80028 I lw $t0, 0($t1) 35 $t1 $t0 0 80032 R jr $t0 0 $t0 0 0 0 8 80036 R add $s0, $s3, $s4 0 $s3 $s4 $s0 0 32 80040 R j Exit 2 80064 80044 R add $s0, $s1, $s2 0 $s1 $s2 $s0 32 80048 R j Exit 2 80064 80052 R sub $s0, $s1, $s2 0 $s1 $s2 $s0 34 80056 R j Exit 2 80064 80060 R sub $s0, $s3, $s4 0 $s3 $s4 $s0 34 80064 Exit REPRESENTAÇÃO DA LINGUAGEM DE MÁQUINA Formato Instrução 80000 R slt $11, $21, $zero 0 21 0 11 0 42 80004 I bne $11, $zero, Exit 5 11 0 60 80008 R slt $11, $21, $10 0 21 10 11 0 42 80012 I beq $11, $zero, Exit 4 11 0 52 80016 R add $9, $21, $21 0 21 21 9 0 32 80020 R add $9, $9, $9 0 9 9 9 0 32 80024 R add $9, $9, $12 0 9 12 9 0 32 80028 I lw $8, 0($9) 35 9 8 0 80032 R jr $8 0 8 0 0 0 8 80036 R add $16, $19, $20 0 19 20 16 0 32 80040 R j Exit 2 24 80044 R add $16, $17, $18 0 17 18 16 32 80048 R j Exit 2 16 80052 R sub $16, $17, $18 0 17 18 16 34 80056 R j Exit 2 8 80060 R sub $16, $19, $20 0 19 20 16 34 80064 Exit e) Código de máquina 6 5 5 5 5 6 80000 R slt $11, $21, $zero 000000 10101 00000 01011 00000 101010 80004 I bne $11, $zero, Exit 000101 01011 00000 80008 R slt $11, $21, $10 000000 10101 01010 01011 00000 101010
  • 18. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 18 80012 I beq $11, $zero, Exit 000100 01011 00000 80016 R add $9, $21, $21 000000 10101 10101 01001 00000 100000 80020 R add $9, $9, $9 000000 01001 01001 01001 00000 100000 80024 R add $9, $9, $12 000000 01001 01100 01001 00000 100000 80028 I lw $8, 0($9) 100011 01001 01000 80032 R jr $8 000000 01001 00000 00000 00000 001000 80036 R add $16, $19, $20 000000 10011 10100 10000 00000 100000 80040 R j Exit 000010 0000 0000 0000 0001 0011 1000 1001 0000 80044 R add $16, $17, $18 000000 10001 10010 10000 100000 80048 R j Exit 000010 0000 0000 0000 0001 0011 1000 1001 0000 80052 R sub $16, $17, $18 000000 10001 10010 10000 100010 80056 R j Exit 000010 0000 0000 0000 0001 0011 1000 1001 0000 80060 R sub $16, $19, $20 000000 10011 10100 10000 100010 80064 EXIT B. OPERANDOS DO MIPS Tabela 1: Tabela de Operandos do MIPS Nome Exemplo Comentários 32 registradores $s0, $s1, $s2, $s3, $s4, $s5, $s6, $s7 - Posições de acesso rápido para armazenamento de dados. - No MIPS, os dados devem estar em registradores para que aas operações aritméticas possam ser realizadas. - Os registradores $s0 - $s7 são mapeados nos registradores reais de número 16-23 e os registradores $t0-$t7 nos de número 8-15. - O registrador $zero do MIPS sempre tem o valor 0 armazenado nele. 230 palavras de memória $t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7 - No MIPS, estas posições só são acessadas por instruções de transferência de dados. - O MIPS endereça byte, de modo que endereços de palavras consecutivas diferem de 4 unidades. - A memória armazena estruturas de dados, como arrays, além dos registradores derramados. C. LINGUAGEM DE MONTAGEM DO MIPS Tabela 2: Tabela de Instruções na Linguagem de Montagem Categoria Instrução Exemplo Significado Comentários Aritmética add add $s1, $s2, $s3 $s1 = $s2 + $s3 Três operandos Dados em registradoressubtract sub $s1, $s2, $s3 $s1 = $s2 – $s3 Transferencia de dados load word lw $s1, 100($s2) $s1 = memória[$s2 + 100] Dados transferidos da memória para registradoresstore word sw $s1, 100($s2) memória[$s2 + 100] = $s1 Desvio Condicional branch on equal beq $s1, $s2, L se ($s1 == $s2) desvia para L Testar a igualdade e desviar se verdadeira branch on not equal bne $s1, $s2, L se ($s1 != $s2) desvia para L Testar a desigualdade e desviar se verdadeira set on less than slt $s1, $s2, $s3 se ($s2 < $s3) então $s1 = 1; senão $s1 = 0 Compare se menor ou igual Usada junto a BEQ e BNE Desvio Incondicional jump j 2500 Desvia para 10000 Desviar para o endereço-alvo jump register jr $t1 Desvia para $s1 Para comandos switch D. LINGUAGEM DE MÁQUINA DO MIPS Tabela 3: Tabela de Instruções em Linguagem 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)
  • 19. Arquitetura de Computadores Ciência da Computação Engenharia de Computação 19 beq I 4 17 18 25 Beq $s1, $s2, 100  divide por quatro bne I 5 17 18 25 Bne $s1, $s2, 100  divide por quatro slt R 0 18 19 17 0 42 Slt $s1, $s2, $s3 j J 2 2500 j 10000  multiplica por quatro jr R 0 9 0 0 0 8 jr $t1 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 intruções de transferência de dados Formato J J op Endereço-alvo Formato das intruções de desvio incondicional E. TABELA DE CONVERSÃO BINÁRIA Tabela 4: Tabela de código binário dos registradores Nome do registrador Número do registrador Binário correspondente em 5 bits 16 8 4 2 1 $s0 16 1 0 0 0 0 $s1 17 1 0 0 0 1 $s2 18 1 0 0 1 0 $s3 19 1 0 0 1 1 $s4 20 1 0 1 0 0 $s5 21 1 0 1 0 1 $s6 22 1 0 1 1 0 $s7 23 1 0 1 1 1 $t0 8 0 1 0 0 0 $t1 9 0 1 0 0 1 $t2 10 0 1 0 1 0 $t3 11 0 1 0 1 1 $t4 12 0 1 1 0 0 $t5 13 0 1 1 0 1 $t6 14 0 1 1 1 0 $t7 15 0 1 1 1 1 Tabela 5: Tabela de código binário das instruções Operação Número Decimal Número Binário em 6 Bits ADD 32 100 000 SUB 34 100 010 OR 36 100 100 AND 37 100 101 SLT 42 101 010 BNE 4 000 100 BEQ 5 000 101 J 2 000 010 JR 8 001 000 LW 35 100 011 SW 43 101 011 E. EXERCÍCIOS