Ambiente Mars Prof Andr Luis Meneses Silva Introduo
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. • Não apresenta recursos de simuladores mais avançados (tal como PCSpim), porém sua interface é bem mais amigável. • Desenvolvido em Java.
Aba Edit Menu de edição
Programa em execução Aba Execute Saída/Entrada de dados Registradores Memória de Dados
Primeiro programa • • • . data hello_str: . globl main • . text • • main: la $a 0, hello_str #carrega end. do string no reg. $a 0. li $v 0, 4 #carrega o código da syscall no reg. $v 0 syscall • • li $v 0, 10 #carrega o código da syscall no reg. $v 0 syscall . asciiz "Hello world!"
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 0 x são interpretados como hexadecimais. – Strings são envolvidos com “”,
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 finalizao com null; –. data <end. > armazena os itens na seqüência no segmento de dados. Se <end. > 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
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 $v 0; – Carregar os argumentos do serviço nos registradores $a 0 -$a 3; – Chama a instrução syscall.
Syscall Serviço Código Argumentos print_int 1 $a 0 = inteiro print_float 2 $f 12 = float print_double 3 $f 12 = double print_string 4 $a 0 = string read_int 5 inteiro (em $v 0) read_float 6 float (em $v 0) read_double 7 double (em $v 0) read_string 8 exit 10 print_char 11 $a 0 = char exit 2 17 $a 0 = resultado $a 0 = buffer, $a 1 = tamanho Resultado
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 através do botão – Entrada e saída do programa são fornecidas através da janela Run/IO.
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).
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
Exercícios • Codificar todo os exemplos de aula no MARS.
Referências • Mars Home Page – http: //courses. missouristate. edu/Ken. Vollmar/MA RS/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.
- Slides: 14