Sei sulla pagina 1di 10

ENTREGA DA SEGUNDA LISTA DE EXERCÍCIOS

A partir da lista geral, disponível no Moodle, resolver e entregar os seguintes


exercícios:

27 (letra e)
29
50
59

Entregar a resolução de exercícios na forma de um único arquivo compactado, via


link específico no Moodle.
Data limite para entrega: 10/12/2019

OBS.: Editado com o Visual Studio Code.

27) E)

REGRAS DO EXERCÍCIO

Aprovado
Média >= 60
Frequência >= 75

Registradores
R0 - 8 bits - médias
R1 - 8 bits - frequências
R2 - quantidade total de alunos
R3 - quantidade de alunos aprovados

PROGRAMA

inicio:

MOV R5, 59 ;guarda o valor para aprovados por nota


MOV R6, 74 ;guarda o valor para aprovados por frequência
MOV R3, 0 ;inicia com 0 a quantidade de alunos aprovados

media:

MOV R7, 1 ;guarda o valor 1 para incremento e decremento

LD R4, [R0], 1 ;lê 1 byte de r0 e armazena em R4 (média)


ADD R0, R7 ;aponta para o próximo byte da média
ADD R1, R7 ;aponta para o próximo byte da frequência

SUB R4, R5 ;diminui 59 de R4 (aprovado se > 0)


BMZ frequência ;desvia se o valor da ultima operação se for maior que 0

proximo:

MOV R7, 1 ;guarda o valor 1 para incremento e decremento


SUB R2, R7 ;decrementa 1 da quantidade de alunos
BZ fim ;se já passou por todos os alunos vai para o fim (R4 = 0)
BMZ media

frequencia:

SUB R1, R7 ;compensa apontando para o byte anterior


LD R4, [R1], 1 ;lê 1 byte de r1 e armazena em r4 (frequência)
ADD R1, R7 ;agora aponta para o próximo

SUB R4, R6 ;diminui 74 da frequência


BMZ contador ;se maior que 0 aprovado por frequência também

MOV R7, 1 ;guarda o valor 1 para incremento e decremento


SUB R2, R7 ;decrementa 1 da quantidade de alunos
BZ fim ;se já passou por todos os alunos vai para o fim (R4 = 0)
BMZ media

contador:

ADD R3, R7 ;incrementa na quantidade total de alunos aprovados


MOV R7, 0 ;artimanha para ir para media apenas se exista alunos
ADD R2, R7
BMZ proximo ;retorna para média para continuar a operação caso exista
alunos

fim:

29)
R0 R1 R2 R3 R4 R5 R6 R7
1000 1004 1008 1012 0 0 125 12
1 1 1 1 1008 5 1 4
1 2 2 1012 4
2 3 3 1016 3
3 5 1020 2
1024 1
1028 0

1000 1004 1008 1012 1016 1020 1024 1028


1008 5 7 28 14 72 0 15
1 1 2 3 5

50)

Instrução 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35
ld r0, [r2], 4 IF ID EX MEM MEM WB
ld r1, [r3], 4 IF ID EX MEM MEM
MEM WB
mov r5, r0 IF ID EX
EX MEM WB
sub r5, r1 IF IF
IF IF IF ID EX MEM WB
bz processa
IF ID EX MEM WB
bmz processa
IF IF IF
ID EX MEM WB
sub r0, r1

IF IF IF ID EX MEM WB
mov r5, r0

IF ID ID EX
MEM WB
sub r5, r1

IF ID ID
ID EX MEM WB
bz resultado

IF ID
ID ID EX MEM WB
bmz processa

IF
IF IF IF IF ID EX MEM
WB
sub r5, r5

IF IF IF
ID EX MEM WB
bz fim
IF ID
EX MEM WB

59)

N = 16
NB = log2 TB = log2 8 = 3 (TB = 3)
NC = log2 TC - log2 A = log2 8 - log2 2 = 3 - 1 = 2 (TC = 8 e A = 2)

NR = N - NB - NC = 16 - 2 - 3 = 11

IC -> índice do conjunto


V -> válido
S -> sujo
ID -> idade relativa (1 = menos utilizado)

Estado inicial da cache:

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 0 0 0 0 0 0
01 0 0 0 0 0 0
10 0 0 0 0 0 0
11 0 0 0 0 0 0

Estado inicial da RAM:


Endereço Inicial Apelido Endereço Inicial Apelido
0x0010 B0 0x0050 B8
0x0018 B1 0x0058 B9
0x0020 B2 0x0060 B10
0x0028 B3 0x0068 B11
0x0030 B4 0x0070 B12
0x0038 B5 0x0078 B13
0x0040 B6 0x0080 B14
0x0048 B7 0x0088 B15

a. ler 20 bytes a partir de 0x0010:

4 bytes 0x0010

IC 10, rót. 00000000000 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 0 0 0 0 0 0
01 0 0 0 0 0 0
10 1 0 0 00000000000 B0 0 0 0
11 0 0 0 0 0 0

4 bytes 0x0014

IC 10, rót. 00000000000 -> HIT

4 bytes 0x0018

IC 11, rót. 00000000000 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 0 0 0 0 0 0
01 0 0 0 0 0 0
10 1 0 0 00000000000 B0 0 0 0
11 1 0 0 00000000000 B1 0 0 0

4 bytes 0x001C

IC 11, rót. 00000000000 -> HIT

4 bytes 0x0020

IC 00, rót. 00000000001 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 0 00000000001 B2 0 0 0
01 0 0 0 0 0 0
10 1 0 0 00000000000 B0 0 0 0
11 1 0 0 00000000000 B1 0 0 0

b. ler 48 bytes a partir de 0x0054

4 bytes 0x0054

IC 10, rót. 00000000010 -> MISS


IC V S ID Rótulo Conteúdo V S ID Rótulo
Conteúdo
00 1 0 0 00000000001 B2 0 0 0
01 0 0 0 0 0 0
10 1 0 1 00000000000 B0 1 0 0
00000000010 B8
11 1 0 0 00000000000 B1 0 0 0

4 bytes 0x0058

IC 11, rót. 00000000010 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 0 00000000001 B2 0 0 0
01 0 0 0 0 0 0
10 1 0 1 00000000000 B0 1 0 0
00000000010 B8
11 1 0 1 00000000000 B1 1 0 0
00000000010 B9

4 bytes 0x005C

IC 11, rót. 00000000010 -> HIT

4 bytes 0x0060

IC 00, rót. 00000000011 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 1 00000000001 B2 1 0 0
00000000011 B10
01 0 0 0 0 0 0
10 1 0 1 00000000000 B0 1 0 0
00000000010 B8
11 1 0 1 00000000000 B1 1 0 0
00000000010 B9

4 bytes 0x0064

IC 00, rót. 00000000011 -> HIT

4 bytes 0x0068

IC 01, rót. 00000000011 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 1 00000000001 B2 1 0 0
00000000011 B10
01 1 0 0 00000000011 B11 0 0 0
10 1 0 1 00000000000 B0 1 0 0
00000000010 B8
11 1 0 1 00000000000 B1 1 0 0
00000000010 B9

4 bytes 0x006C
IC 01, rót. 00000000011 -> HIT

4 bytes 0x0070

IC 10, rót. 00000000011 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 1 00000000001 B2 1 0 0
00000000011 B10
01 1 0 0 00000000011 B11 0 0 0
10 1 0 0 00000000011 B12 1 0 1
00000000010 B8
11 1 0 1 00000000000 B1 1 0 0
00000000010 B9

4 bytes 0x0074

IC 10, rót. 00000000011 -> HIT

4 bytes 0x0078

IC 11, rót. 00000000011 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 1 00000000001 B2 1 0 0
00000000011 B10
01 1 0 0 00000000011 B11 0 0 0
10 1 0 0 00000000011 B12 1 0 1
00000000010 B8
11 1 0 0 00000000011 B13 1 0 1
00000000010 B9

4 bytes 0x007C

IC 11, rót. 00000000011 -> HIT

4 bytes 0x0080

IC 00, rót. 00000000100 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 0 00000000100 B14 1 0 1
00000000011 B10
01 1 0 0 00000000011 B11 0 0 0
10 1 0 0 00000000011 B12 1 0 1
00000000010 B8
11 1 0 0 00000000011 B13 1 0 1
00000000010 B9

c. escrever 14 bytes a partir de 0x0014

4 bytes 0x0014

IC 10, rót. 00000000000 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 0 00000000100 B14 1 0 1
00000000011 B10
01 1 0 0 00000000011 B11 0 0 0
10 1 0 1 00000000011 B12 1 1 0
00000000000 B0'
11 1 0 0 00000000011 B13 1 0 1
00000000010 B9

4 bytes 0x0018

IC 11, rót. 00000000000 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 0 00000000100 B14 1 0 1
00000000011 B10
01 1 0 0 00000000011 B11 0 0 0
10 1 0 1 00000000011 B12 1 1 0
00000000000 B0'
11 1 0 1 00000000011 B13 1 1 0
00000000000 B1'

4 bytes 0x001C

IC 11, rót. 00000000000 -> HIT

4 bytes 0x0020

IC 00, rót. 00000000001 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 1 00000000100 B14 1 1 0
00000000001 B2'
01 1 0 0 00000000011 B11 0 0 0
10 1 0 1 00000000011 B12 1 1 0
00000000000 B0'
11 1 0 1 00000000011 B13 1 1 0
00000000000 B1'

d. ler 20 bytes a partir de 0x0058

4 bytes 0x0058

IC 11, rót. 00000000010 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 1 00000000100 B14 1 1 0
00000000001 B2'
01 1 0 0 00000000011 B11 0 0 0
10 1 0 1 00000000011 B12 1 1 0
00000000000 B0'
11 1 0 0 00000000010 B9 1 1 1
00000000000 B1'

4 bytes 0x005C
IC 11, rót. 00000000010 -> HIT

4 bytes 0x0060

IC 00, rót. 00000000011 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 0 00000000011 B10 1 1 1
00000000001 B2'
01 1 0 0 00000000011 B11 0 0 0
10 1 0 1 00000000011 B12 1 1 0
00000000000 B0'
11 1 0 0 00000000010 B9 1 1 1
00000000000 B1'

4 bytes 0x0064

IC 00, rót. 00000000011 -> HIT

4 bytes 0x0068

IC 01, rót. 00000000011 -> HIT

e. escrever 28 bytes a partir de 0x0056

2 bytes 0x0056

IC 10, rót. 00000000010 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 0 00000000011 B10 1 1 1
00000000001 B2'
01 1 0 0 00000000011 B11 0 0 0
10 1 1 0 00000000010 B8' 1 1 1
00000000000 B0'
11 1 0 0 00000000010 B9 1 1 1
00000000000 B1'

4 bytes 0x0058

IC 11, rót. 00000000010 -> HIT

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 0 0 00000000011 B10 1 1 1
00000000001 B2'
01 1 0 0 00000000011 B11 0 0 0
10 1 1 0 00000000010 B8' 1 1 1
00000000000 B0'
11 1 1 0 00000000010 B9' 1 1 1
00000000000 B1'

4 bytes 0x005C

IC 11, rót. 00000000010 -> HIT

4 bytes 0x0060
IC 00, rót. 00000000011 -> HIT

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 1 0 00000000011 B10' 1 1 1 00000000001
B2'
01 1 0 0 00000000011 B11 0 0 0
10 1 1 0 00000000010 B8' 1 1 1
00000000000 B0'
11 1 1 0 00000000010 B9' 1 1 1
00000000000 B1'

4 bytes 0x0064

IC 00, rót. 00000000011 -> HIT

4 bytes 0x0068

IC 01, rót. 00000000011 -> HIT

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 1 0 00000000011 B10' 1 1 1 00000000001
B2'
01 1 1 0 00000000011 B11' 0 0 0
10 1 1 0 00000000010 B8' 1 1 1
00000000000 B0'
11 1 1 0 00000000010 B9' 1 1 1
00000000000 B1'

4 bytes 0x006C

IC 01, rót. 00000000011 -> HIT

2 bytes 0x0070

IC 10, rót. 00000000011 -> MISS

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 1 0 00000000011 B10' 1 1 1 00000000001
B2'
01 1 1 0 00000000011 B11 0 0 0
10 1 1 1 00000000010 B8' 1 1 0
00000000011 B12'
11 1 1 0 00000000010 B9' 1 1 1
00000000000 B1'

RAM:

Endereço Inicial Apelido Endereço Inicial Apelido


0x0010 B0' 0x0050 B8
0x0018 B1 0x0058 B9
0x0020 B2 0x0060 B10
0x0028 B3 0x0068 B11
0x0030 B4 0x0070 B12
0x0038 B5 0x0078 B13
0x0040 B6 0x0080 B14
0x0048 B7 0x0088 B15

Estado final cache:

IC V S ID Rótulo Conteúdo V S ID Rótulo


Conteúdo
00 1 1 0 00000000011 B10' 1 1 1 00000000001
B2'
01 1 1 0 00000000011 B11 0 0 0
10 1 1 1 00000000010 B8' 1 1 0
00000000011 B12'
11 1 1 0 00000000010 B9' 1 1 1
00000000000 B1'

Estado final da RAM:

Endereço Inicial Apelido Endereço Inicial Apelido


0x0010 B0' 0x0050 B8
0x0018 B1 0x0058 B9
0x0020 B2 0x0060 B10
0x0028 B3 0x0068 B11
0x0030 B4 0x0070 B12
0x0038 B5 0x0078 B13
0x0040 B6 0x0080 B14
0x0048 B7 0x0088 B15

número de hits: 17
número de misses: 17
alteração na RAM: B0 -> B0' (0x0010 até 0x0017)

Potrebbero piacerti anche