8
Implementando um Montador com LEX e YACC - 3

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

Embed Size (px)

Citation preview

Page 1: Implementando um Montador com LEX e YACC - 3. Trabalho 5 – Não obrigatório: até mais 1.0 ponto na média (enviar para sp1@lcad.inf.ufes.br) A partir de

Implementando um Montador com LEX e YACC - 3

Page 2: Implementando um Montador com LEX e YACC - 3. Trabalho 5 – Não obrigatório: até mais 1.0 ponto na média (enviar para sp1@lcad.inf.ufes.br) A partir de

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.

Page 3: Implementando um Montador com LEX e YACC - 3. Trabalho 5 – Não obrigatório: até mais 1.0 ponto na média (enviar para sp1@lcad.inf.ufes.br) A partir de

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.

Page 4: Implementando um Montador com LEX e YACC - 3. Trabalho 5 – Não obrigatório: até mais 1.0 ponto na média (enviar para sp1@lcad.inf.ufes.br) A partir de

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

Page 5: Implementando um Montador com LEX e YACC - 3. Trabalho 5 – Não obrigatório: até mais 1.0 ponto na média (enviar para sp1@lcad.inf.ufes.br) A partir de

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.

Page 6: Implementando um Montador com LEX e YACC - 3. Trabalho 5 – Não obrigatório: até mais 1.0 ponto na média (enviar para sp1@lcad.inf.ufes.br) A partir de

Exemplo Interpretador- Memória: - Registradores:

- PC

0x27BDFFE8

0xAFA40010

0x03020100

0xAFA20008

0x2402000A

0x27BDFFE8

0xAFA40010

0x2402000C

0xAFA20008

0x2402000A

0x27BDFFE8

0xAFA40010

0x000000

0x000004

0x000008

0x00000C

0x000010

0x000014

0x000018

0x00001C

0x000020

0x000024

0x000028

0x00002C

$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

0x000008

Page 7: Implementando um Montador com LEX e YACC - 3. Trabalho 5 – Não obrigatório: até mais 1.0 ponto na média (enviar para sp1@lcad.inf.ufes.br) A partir de

Exemplo Interpretador lw $2, 0(4)

PC

PC++

0x000008

Fetch instruction from Memory.

Decode Instruction

Execute Instruction

Memory

0x2402000C

op rd imm

3 2 4

$2 = memory[0x0000004]pc = pc + 1

Page 8: Implementando um Montador com LEX e YACC - 3. Trabalho 5 – Não obrigatório: até mais 1.0 ponto na média (enviar para sp1@lcad.inf.ufes.br) A partir de