ambiente mars
DESCRIPTION
Ambiente Mars. Prof. André Luis Meneses Silva. Introdução. O simulador MIPS Mars foi desenvolvido pela universidade de Missouri. Mars foi projetado para ser um simulador de fácil utilização, para alunos de graduação. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/1.jpg)
Ambiente Mars
Prof. André Luis Meneses Silva
![Page 2: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/2.jpg)
Introdução
• O simulador MIPS Mars foi desenvolvido pela universidade de Missouri.
• Mars foi projetado para ser um simulador de fácil utilização, para alunos de graduação.
• Não apresenta recursos de simuladores mais avançados (tal como PCSpim), porém sua interface é bem mais amigável.
• Desenvolvido em Java.
![Page 3: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/3.jpg)
Aba EditMenu de ediçãoMenu de edição
![Page 4: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/4.jpg)
Aba Execute RegistradoresRegistradores
Memória de DadosMemória de DadosSaída/Entrada de dadosSaída/Entrada de dados
Programa em execuçãoPrograma em execução
![Page 5: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/5.jpg)
Primeiro programa• .data• hello_str: .asciiz "Hello world!"• .globl main
• .text
• main:• la $a0,hello_str #carrega end. do string no reg. $a0.• li $v0,4 #carrega o código da syscall no reg. $v0• syscall
• li $v0,10 #carrega o código da syscall no reg. $v0• syscall
![Page 6: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/6.jpg)
Sintaxe do Assembler
• Sintaxe do assembler:– Comentários de linha iniciam-se com #.– Identificadores são seqüências de caracteres
alfanuméricos, _ e ., e não se iniciam com números.– Rótulos são colocados no começo de uma linha e
seguidos de :.– Números estão na base decimal por padrão; se
precedidos por 0x são interpretados como hexadecimais.
– Strings são envolvidos com “”,
![Page 7: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/7.jpg)
Diretivas• Utilizadas pelo programador para instruir o assembler como
traduzir um programa.• Não produz instruções de máquina.• Principais diretivas:
– .asciiz armazena caracteres de um string na memória e finaliza-o com o caracter null;
– .ascii armazena caracteres de um string na memória, mas não finaliza-o com null;
– .data <end.> armazena os itens na seqüência no segmento de dados. Se <end.> for fornecido, os dados são armazenados a partir do endereço fornecido;
– .globl rótulo declara rótulo como global, podendo ser acessado de outros arquivos;
– .text armazena os itens na seqüência no segmento de textos do usuário. Itens devem ser instruções
![Page 8: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/8.jpg)
Syscall
• O Mars provê alguns serviços do sistema operacional através da instrução syscall.
• Para utilizar um serviço:– Carregar o código do serviço no registrador $v0;– Carregar os argumentos do serviço nos
registradores $a0-$a3;– Chama a instrução syscall.
![Page 9: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/9.jpg)
SyscallServiço Código Argumentos Resultado
print_int 1 $a0 = inteiro
print_float 2 $f12 = float
print_double 3 $f12 = double
print_string 4 $a0 = string
read_int 5 inteiro (em $v0)
read_float 6 float (em $v0)
read_double 7 double (em $v0)
read_string 8 $a0 = buffer, $a1 = tamanho
exit 10
print_char 11 $a0 = char
exit2 17 $a0 = resultado
![Page 10: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/10.jpg)
Simulando um programa
• Para simular um programa em Assembly:– Utilize a aba edit para escrever um programa ou– Carregar o arquivo (menu File/Open ou ícone
Open), que deve ter extensão .s ou .asm.– Ir até a opção Run >> Assemble– Run >> Go ou ir até o ícone – Dá suporte a execução passo a passo através do
botão – Entrada e saída do programa são fornecidas
através da janela Run/IO.
![Page 11: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/11.jpg)
Simulando um programa
• O Mars permite a introdução de breakpoints.
• Também da suporte a retornar a execução em uma instrução (no caso de execução passo a passo).
![Page 12: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/12.jpg)
Mars
• Além disso, o MARS possui muitos outros recursos...– Visualizador de estado da memória– Simulador de Cache– Floating pointing representation
• Serão explorados no decorrer do curso
![Page 13: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/13.jpg)
Exercícios
• Codificar todo os exemplos de aula no MARS.
![Page 14: Ambiente Mars](https://reader036.vdocuments.pub/reader036/viewer/2022062321/56813e27550346895da807ff/html5/thumbnails/14.jpg)
Referências
• Mars Home Page– http://courses.missouristate.edu/KenVollmar/
MARS/features.htm
• Spim Home Page– http://pages.cs.wisc.edu/~larus/spim.html
• Notas de aula da professora Kalina Rabbani– Em breve, disponível no site da disciplina.