SlideShare a Scribd company logo
1 of 19
Download to read offline
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

More Related Content

What's hot

recursos humanos
 recursos humanos recursos humanos
recursos humanosmiguel roke
 
256557462 un1 apostila unip-pdf
256557462 un1 apostila unip-pdf256557462 un1 apostila unip-pdf
256557462 un1 apostila unip-pdfHenrique Rolim
 
Fichas de Trabalho Carochinha 1º ano
Fichas de Trabalho Carochinha 1º anoFichas de Trabalho Carochinha 1º ano
Fichas de Trabalho Carochinha 1º anoAna Picão
 
BINGO MATEMÁTICO-RADICIAÇÃO
BINGO MATEMÁTICO-RADICIAÇÃOBINGO MATEMÁTICO-RADICIAÇÃO
BINGO MATEMÁTICO-RADICIAÇÃOEdimar Santos
 
Ficheiro de Matemática 1º ano
Ficheiro de Matemática 1º anoFicheiro de Matemática 1º ano
Ficheiro de Matemática 1º anoAna Picão
 
Projeto de empreendedorismo questionário
Projeto de empreendedorismo questionárioProjeto de empreendedorismo questionário
Projeto de empreendedorismo questionárioAna Valeria Silva
 
SequêNcias De NúMeros
SequêNcias De NúMerosSequêNcias De NúMeros
SequêNcias De NúMerosrytapereira
 
Raciocinio logico 500 questoes comentadas
Raciocinio logico 500 questoes comentadasRaciocinio logico 500 questoes comentadas
Raciocinio logico 500 questoes comentadasFabio Antonio
 
ESTATÍSTICA E PROBABILIDADE - AULA 1
ESTATÍSTICA E PROBABILIDADE - AULA 1ESTATÍSTICA E PROBABILIDADE - AULA 1
ESTATÍSTICA E PROBABILIDADE - AULA 1Otávio Sales
 
Educação financeira – 5º ano a
Educação financeira – 5º ano aEducação financeira – 5º ano a
Educação financeira – 5º ano aHanna Martiniano
 
Angulos Opostos Retos Rasos Suplementares
Angulos Opostos Retos Rasos SuplementaresAngulos Opostos Retos Rasos Suplementares
Angulos Opostos Retos Rasos Suplementarestioheraclito
 
Aula 2 reta numérica e ordenação
Aula 2 reta numérica e ordenaçãoAula 2 reta numérica e ordenação
Aula 2 reta numérica e ordenaçãoOlicio Silva
 
Lista de Exercícios – Divisores
Lista de Exercícios – DivisoresLista de Exercícios – Divisores
Lista de Exercícios – DivisoresEverton Moraes
 
Lista de Exercícios 2 – Números Inteiros
Lista de Exercícios 2 – Números InteirosLista de Exercícios 2 – Números Inteiros
Lista de Exercícios 2 – Números InteirosEverton Moraes
 
Desvios médios, variância e desvios padrões
Desvios médios, variância e desvios padrõesDesvios médios, variância e desvios padrões
Desvios médios, variância e desvios padrõesGabriel Passeri
 
Logica Algoritmo 03 Tipos Expressoes Variaveis Operadores
Logica Algoritmo 03 Tipos Expressoes Variaveis OperadoresLogica Algoritmo 03 Tipos Expressoes Variaveis Operadores
Logica Algoritmo 03 Tipos Expressoes Variaveis OperadoresRegis Magalhães
 

What's hot (20)

recursos humanos
 recursos humanos recursos humanos
recursos humanos
 
Simulado 6º ano
Simulado 6º anoSimulado 6º ano
Simulado 6º ano
 
256557462 un1 apostila unip-pdf
256557462 un1 apostila unip-pdf256557462 un1 apostila unip-pdf
256557462 un1 apostila unip-pdf
 
Existência do ar estados do tempo
Existência do ar estados do tempoExistência do ar estados do tempo
Existência do ar estados do tempo
 
Lista 4
Lista 4Lista 4
Lista 4
 
Adição e Subtração de Frações
Adição  e Subtração de FraçõesAdição  e Subtração de Frações
Adição e Subtração de Frações
 
Fichas de Trabalho Carochinha 1º ano
Fichas de Trabalho Carochinha 1º anoFichas de Trabalho Carochinha 1º ano
Fichas de Trabalho Carochinha 1º ano
 
BINGO MATEMÁTICO-RADICIAÇÃO
BINGO MATEMÁTICO-RADICIAÇÃOBINGO MATEMÁTICO-RADICIAÇÃO
BINGO MATEMÁTICO-RADICIAÇÃO
 
Ficheiro de Matemática 1º ano
Ficheiro de Matemática 1º anoFicheiro de Matemática 1º ano
Ficheiro de Matemática 1º ano
 
Projeto de empreendedorismo questionário
Projeto de empreendedorismo questionárioProjeto de empreendedorismo questionário
Projeto de empreendedorismo questionário
 
SequêNcias De NúMeros
SequêNcias De NúMerosSequêNcias De NúMeros
SequêNcias De NúMeros
 
Raciocinio logico 500 questoes comentadas
Raciocinio logico 500 questoes comentadasRaciocinio logico 500 questoes comentadas
Raciocinio logico 500 questoes comentadas
 
ESTATÍSTICA E PROBABILIDADE - AULA 1
ESTATÍSTICA E PROBABILIDADE - AULA 1ESTATÍSTICA E PROBABILIDADE - AULA 1
ESTATÍSTICA E PROBABILIDADE - AULA 1
 
Educação financeira – 5º ano a
Educação financeira – 5º ano aEducação financeira – 5º ano a
Educação financeira – 5º ano a
 
Angulos Opostos Retos Rasos Suplementares
Angulos Opostos Retos Rasos SuplementaresAngulos Opostos Retos Rasos Suplementares
Angulos Opostos Retos Rasos Suplementares
 
Aula 2 reta numérica e ordenação
Aula 2 reta numérica e ordenaçãoAula 2 reta numérica e ordenação
Aula 2 reta numérica e ordenação
 
Lista de Exercícios – Divisores
Lista de Exercícios – DivisoresLista de Exercícios – Divisores
Lista de Exercícios – Divisores
 
Lista de Exercícios 2 – Números Inteiros
Lista de Exercícios 2 – Números InteirosLista de Exercícios 2 – Números Inteiros
Lista de Exercícios 2 – Números Inteiros
 
Desvios médios, variância e desvios padrões
Desvios médios, variância e desvios padrõesDesvios médios, variância e desvios padrões
Desvios médios, variância e desvios padrões
 
Logica Algoritmo 03 Tipos Expressoes Variaveis Operadores
Logica Algoritmo 03 Tipos Expressoes Variaveis OperadoresLogica Algoritmo 03 Tipos Expressoes Variaveis Operadores
Logica Algoritmo 03 Tipos Expressoes Variaveis Operadores
 

Viewers also liked

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
 

Viewers also liked (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
 

Similar to 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
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
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
 

Similar to 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)
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
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
 

More from Elaine Cecília Gatto

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

More from Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
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
 
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 ...
 
Número de Bell
Número de BellNúmero de Bell
Número de Bell
 

Recently uploaded

PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfWagnerCamposCEA
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasSocorro Machado
 

Recently uploaded (20)

PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 

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