mips
Chrístofer Caetano de Oliveira
SPIM
Simulador “clássico” multi-plataformas open-
source, suas versões mais novas são desenvolvidas em Qt.
Download:
http://spimsimulator.sourceforge.net/
Documentação:
http://pages.cs.wisc.edu/~larus/spim.html#inform ation 2
Simuladores MIPS
MARS
Simulador “moderno” multi-plataformas,
desenvolvido em JAVA é open-source.
Download:
http://courses.missouristate.edu/KenVollmar/MAR
S/download.htm
Documentação:
http://courses.missouristate.edu/KenVollmar/MAR
S/Help/MarsHelpIntro.html
3
Simuladores MIPS
MARS
A entrada e saída padrão do sistema é o console,
através dele o usuário pode interagir com o programa lendo as mensagens e escrevendo dados. Para se utilizar o console é necessário o
conhecimento de algumas “syscalls” (as básicas são compatíveis com o SPIM).
4
Simuladores MIPS
O que são syscalls?
São serviços de sistema, principalmente para I/O.
Para a chamada destes serviços é necessário
indicar qual o serviço, através do registrador $v0.
E passar seus parâmetros, geralmente pelos registradores $a0 .. $a3.
5
Simuladores MIPS
Syscalls básicas
Nome
ID
Parâmetros (Entradas)
Saídas
print_int
1
$a0: Inteiro à ser escrito
-
print_str
4
$a0: Ponteiro para string
-
read_int
5
-
$v0: Valor lido
Exit
10
-
-
print_char
11
$a0: Caractere à ser escrito -
read_char
12
-
$v0: Caractere lido
Lista completa: http://courses.missouristate.edu/KenVollmar/MARS/Help/SyscallHelp.h tml
6
Simuladores MIPS
Exemplo de uso das syscalls
...
move $a0, $t0 # Valor à ser impresso no console li $v0, 1 # ID syscall (1 = print_int) syscall # Dispara syscall
...
7
Simuladores MIPS
Pseudo Instructions
São similares as macros, no momento da
compilação são subtituídas por uma ou mais instruções reais.
Ex:
li $t0, 0x80013002 #