No Title
O processador MIPS é constituído por:
- CPU -
- unidade principal;
- coprocessadores -
- unidades auxiliares;
- 0.
- gestão de excepções, memória virtual;
- 1.
- unidade de cálculo em vírgula flutuante.
Figure: MIPS R2000 CPU e FPU
A tabela
apresenta a convenção para o uso dos registos que garante a compatibilidade entre módulos desenvolvidos por diferentes programadores.
Table: Convenções para uso dos registos do MIPS
O SPIM simula os registos do coprocessador
necessários para a gestão de excepções.

O SPIM numera os octetos de uma palavra obedecendo a uma sequência que depende da convenção usada pelo processador que corre a simulação.
- big-endian

- little-endian:

A organização da memória no MIPS é a seguinte:
Figure: Organização da Memória
- base - segmento de texto (0x400000) contém as instruções.
- intermédia - segmento de dados ( 0x10000000)
- estática - objectos cujo tamanho e endereço é conhecido no momento da compilação ou ligação.
- dinâmica - reservada dinamicamente aquando da invocação de funções, (p.ex. malloc).
- topo- a pilha inicia-se em (0x7fffffff) e cresce em direcção ao segmento de dados.
- possui modos de endereçamento limitados;
- complexidade remetida para os programadores.
A complexidade é ocultada através da definição de uma máquina virtual e respectivo assembler
- não existem instruções retardadas (delayed);
- nos saltos (delayed branch);
- na transferência de valores de e para a memória (delayed loads).
- o conjunto de instruções é enriquecido com pseudo-instruções.
O SPIM S20 é um simulador dos processadores RISC- MIPS R2000.
- ler e executar programas descritos em linguagem assembly;
- ler e executar ficheiros de código MIPS executável;
- estabelecer um interface básico com o computador hospedeiro;
- monitorizar e depurar (debug) programas.
- hardware específico nem sempre disponível;
- arquitecturas cada vez mais complexas;
- MIPS R2000 é um protótipo de máquina RISC.
- interfaces mais elaborados na versão X (XSPIM);
- melhor deteção de erros;
- facilmente modificável;
- estudo de novos processadores e instruções;
- previsão de comportamento dos programas;
O simulador tem um interface simples spim e um mais sofisticado xspim.
spim(1) spim(1)
NAME
xspim - A MIPS R2000/R3000 Simulator
SYNTAX
xspim [-asm/-bare -trap/-notrap -quiet/-noquiet
-mapped_io/-nomapped_io -file file -execute file
-stext size -sdata size -sstack size -sktext size -skdata
size -ldata size -lstack size -lkdata size
-hexgpr/-nohexgpr -hexfpr/-nohexfpr]
DESCRIPTION
SPIM S20 is a simulator that runs programs for the MIPS
R2000/R3000 RISC computers. (For a description of the real
machines, see Gerry Kane and Joe Heinrich, MIPS RISC
Architecture, Prentice Hall, 1992.) SPIM can read and
immediately execute files containing assembly language or
MIPS executable files. SPIM is a self-contained system
for running these programs and contains a debugger and
interface to a few operating system services.
Na versão X do spim os painéis estão continuamente a ser actualizados, excepto durante a execução dos programas.
Figure: Interface XSPIM.
-
- quit - Abandonar o simulador.
-
- load- Lêr um ficheiro assembly ou executável para a memória.
-
- run - Iniciar a execução do programa.
-
- step - Executar passo-a-passo.
-
- clear - Reiniciar os valores dos registos ou da memória.
-
- set value - Atribuir valores aos registos ou à memória.
-
- print - Mostrar o valor dum registo ou duma posição de memória.
-
- breakpoint - Definir, apagar ou mostrar pontos de paragem.
-
- help - Mostrar a mensagem de ajuda.
-
- terminal - Mostrar ou esconder a consola do programa.
-
- mode - Estabelece os modos de operação do simulador.
- tempos das instruções - diferentes do real.
- memória - não existem caches nem atrasos no acesso.
- operações - vírgula flutuante, não duram o tempo previsível.
- pseudo-instruções - expandidas para várias instruções puras.
O SPIM simula a máquina virtual do MIPS seguindo as convenções da sua linguagem Assembler e dos seus compiladores.
O SPIM contempla um subconjunto de directivas do assembler do MIPS:
O SPIM não faz qualquer distinção entre as directivas (.data, .rdata, and .sdata).
-
- .text <addr>Os próximos itens (instruções ou palavras) são incluídos no segmento de texto.Se estiver presente o argumento
addr o segmento de texto inicia no endereço addr.
-
- .ktext <addr>Idêntica à anterior para o segmento de texto do Kernel.
-
- .data <addr>Os próximos itens são incluídos no segmento de dados.Se estiver presente o argumento
addr o segmento de dados inicia no endereço addr.
-
- .kdata <addr>Idêntica à anterior para o segmento de dados do Kernel.
-
- .globl symDeclara sym como um símbolo
global que também pode ser referenciado noutros ficheiros.
-
- .extern sym sizeDeclara a estrutura de dados declarada sym como um símbolo global que tem
size octetos de comprimento.Sugere que aquela estrutura seja colocada numa posição de memória acessível através do registo $gp.
-
- .align nAlinhamento dos dados em quadros de
octetos.
- - meia palavra (dois octectos);
- - palavra ( quatro octetos);
- - desliga o mecanismo de alinhamento até uma próxima directiva .data or .kdata .
-
- .ascii strA cadeia de caracteres não terminada pelo caracter zero é guardada sequencialmente na memória.
-
- .asciiz strIdêntica à anterior com a cadeia de caracteres terminada pelo caracter zero.
-
- .byte b1, ..., bnGuarda os
octectos sequencialmente na memória.
-
- .space naloca
octectos de espaço no segmento de dados.
-
- .half h1, ..., hnGuarda os
valores de 16-bits (meia palavra) sequencialmente na memória.
-
- .word w1, ..., wnGuarda os
valores de 32-bits (palavras) sequencialmente na memória.
-
- .float f1, ..., fnGuarda os
valores em vírgula flutuante ( precisão simples).
-
- .double d1, ..., dnGuarda os
valores em vírgula flutuante ( precisão dupla).
.data
item: .word 1
.text
main: lw $t0, item # coloca 1 no registo $t0
This document was generated using the LaTeX2HTML translator Version 0.6.4 (Tues Aug 30 1994) Copyright © 1993, 1994, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
The command line arguments were:
latex2html -show_section_numbers -split 0 spim.tex.
The translation was initiated by Joao Luis Sobral on Wed Oct 16 11:45:02 WET 1996
Joao Luis Sobral
Wed Oct 16 11:45:02 WET 1996