MIPS32 é um conjunto de instruções 32 bits. Esse projeto permite executar diferentes instruções dessa arquitetura através de uma simulação de um microprocessador MIPS.
flowchart TD
A(Camada de Apresentação) -->|IMIPS32| B(Camada de Simulação)
B --> |IMemoryManager| C(Camada de Dados)
O Simulador é organizado em 3 camadas distintas:
- Camada de Apresentação, responsável pela exibição dos dados (CLI e GUI) e comunicação com o usuário (leitura de entradas, produção de saídas, etc);
- Camada de Simulação, que implementa as funcionalidades de um processador MIPS32 (instruções, controle de memória, execução, etc);
- Camada de Dados, implementa as estruturas de memórias utilizadas pelo processador (registradores, memória principal);
A comunicação entre as camadas ocorre através de interfaces que definem quais funcionalidades são oferecidas por cada uma das camadas.
classDiagram
direction BT
class IMIPS32 {
<<Interface>>
+ loadInstructions(List~String~) void
+ output() String
+ registers() Map~String, Integer~
+ loadMemory(Map~Integer, Integer~) void
+ memory() Map~Integer, Integer~
+ runNexInstruction() void
+ reset() void
+ loadData(Map~Integer, Integer~) void
+ loadRegisters(Map~String, Integer~) void
+ toAssembly() String
}
class IMemoryLocation~T~ {
<<Interface>>
+ read() T
+ type() MemoryLocationType
+ address() int
+ write(T) void
boolean reserved
}
class IMemoryManager {
<<Interface>>
+ byteMemoryLocations() List~IMemoryLocation~Byte~~
+ getRegisterFromNumber(int) IRegister
+ getByteMemoryLocationFromAddress(int) IMemoryLocation~Byte~
+ isAddressWordAligned(int) boolean
+ wordMemoryLocations() List~IMemoryLocation~Integer~~
+ getWordMemoryLocationFromAddress(int) IMemoryLocation~Integer~
IRegister HI
IRegister LO
IRegister PC
}
class IRegister {
<<Interface>>
+ number() int
+ write(int) void
+ type() RegisterType
+ read() int
}
- A interface
IMemoryManager
, e as interfaces auxiliaresIRegister
eIMemoryLocation
, define um controlador de memória. Esse controlador (classe) é responsável pelo controle dos diferentes registradores e espaços de memória existentes. - A interface
IMIPS32
define todas as funcionalidades disponibilizadas por um processador MIPS de 32 bits.
Os requisitos do projeto podem ser encontrados em Projeto Simulador MIPS e Arquivos Auxiliares - MIPS.