Implementando um Montador
com LEX e YACC - 3
Trabalho 5 – Não obrigatório: até mais
1.0 ponto na média (enviar para
[email protected])

A partir de seu montador, faça um interpretador da
MIPS ISA




O interpretador recebe como entrada um arquivo texto
contendo um programa em linguagem assembly e o
executa diretamente.
Ele deve percorrer o programa, a partir de seu ponto de
entrada, executando cada comando.
Cada instrução executada deve ser impressa e, a seguir,
devem ser impressos os valores dos 32 registradores e
do PC em hexadecimal, sempre com oito algarismos.
O interpretador deve ser capaz de executar todas as
instruções do último slide.
Interpretador MIPS ISA
Os circuitos que compõem um processador MIPS
podem ser divididos em duas partes:
 Datapath – circuitos do processador responsáveis
pela manipulação dos dados.
 Controle – circuitos responsáveis por controlar o
fluxo dos dados através do datapath.
Interpretador MIPS ISA
Um processador é uma máquina de estados que
executa a seguinte seqüência de estados
continuamente:
1. Leia da memória a instrução apontada pelo
registrador Program Counter (PC)
2.Incremente o PC (PC = PC + 1; ou PC = PC + 4
se a instrução for de 4 bytes)
3.Decodifique a instrução
4.Execute a instrução
5.Volte ao passo 1
Interpretador MIPS ISA




A memória é usada para guardar as instruções e
os dados dos programas.
PC guarda o endereço da instrução corrente.
Somador pode ser usado para incrementar o PC
de modo a fazê-lo apontar para a próxima
instrução.
32 registradores para manipulação dos dados.
Exemplo Interpretador
- Memória:
- Registradores:
0x000000
0x27BDFFE8
0x000004
0xAFA40010
0x000008
0x03020100
0x00000C 0xAFA20008

0x000010
0x2402000A
0x000014
0x27BDFFE8
0x000018
0xAFA40010
0x00001C 0x2402000C
0x000020
0xAFA20008
0x000024
0x2402000A
0x000028
0x27BDFFE8
0x00002C 0xAFA40010
$0
$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
- PC
0x000008
Exemplo Interpretador
lw
PC
0x000008
Fetch instruction
from Memory.
Memory
0x2402000C
$2,
0(4)
op
rd
imm
3
2
4
Decode
Instruction
Execute
Instruction
$2 = memory[0x0000004]
pc = pc + 1
PC++
Download

Slides da aula 5 de laboratório