LABORG Parte 3 – Introdução a Programação em Linguagem de Montagem do MIPS Fernando Gehm Moraes César Marcon Ney Laert Vilar Calazans 14/setembro/2009 Introdução • MIPS – Um processador RISC de 32 bits • Conjunto de Instruções – Usa-se o Instruction Set Architecture (ISA) do MIPS R2000, primeira geração do MIPS (década de 80) • Todas as instruções ocupam 32 bits • Dados mais naturalmente tratados são de 32 bits – * ISA do MIPS R2000 “dá suporte direto a”*: • Números naturais de 32, 16 ou 8 bits • Números inteiros de 32, 16 ou 8 bits • Números racionais de 32 ou 64 bits • Manipulação de caracteres ASCII compactados em palavras de 32 bits ou descompactados • Suporte limitado a dados quaisquer de 64, 32, 16 e 8 bits “Dá suporte direto a” significa “possui instruções específicas para manipular tais tipos de dados” Fernando Moraes / César Marcon / Ney Calazans 2 Objetivos • Esta aula tem como objetivos: – Dar noções de como estruturar programas em linguagem de montagem do MIPS – Dar noções de como criar estruturas de dados simples no MIPS – Treinar conceitos básicos de programação no MIPS com: • Números naturais • Números inteiros • Cadeias de caracteres • Forma de realizar este treino – escrever e testar três programas: – Somar o conteúdo de duas variáveis inteiras positivas de 64 bits e colocar o resultado em uma terceira variável – Soma64bits – Multiplicar dois números naturais de 32 bits e imprimir o resultado - Multip – Manipular uma cadeia de caracteres qualquer, trocando todas as vogais maiúsculas em letras minúsculas, mantendo todos os demais caracteres intactos. Imprimir o resultado - Vogaistolower • Notar que números racionais não serão abordados aqui, pois sua representação será estudada apenas em disciplina posterior. Fernando Moraes / César Marcon / Ney Calazans 3 TRABALHO A FAZER • Familiarizar-se com o ambiente de desenvolvimento MARS para o MIPS R2000 • Compreender o processo de edição, montagem e simulação, incluindo operações de entrada e saída no ambiente MARS • Programar as três aplicações mencionadas aqui e mostrar que os programas funcionam usando o ambiente MARS: – Soma64bits.asm – Dicas: o grande problema é como propagar o vai-um dos 32 bits inferiores para os superiores. Use instruções de teste para resolver o problema. – Multip.asm - Dicas: Usem uma das instruções de multiplicação do MIPS, mas o resultado final deve estar em registradores do Banco de registradores, e não nos registradores especiais HI e LO. – Vogaistolower.asm - Dicas: Os caracteres entre A-Z possuem representação ASCII que em hexadecimal (8bits) vão respectivamente em sequência de 0x41 a 0x5A, e os caracteres a-z vão em sequência de 0x61 a 0x7A. Controlem as decisões no programa fazendo testes numéricos para verificar se os caracteres são os que se quer alterar. Fernando Moraes / César Marcon / Ney Calazans 4 A ENTREGAR • Um arquivo compactado (.zip, .rar, etc.) contendo: – Os códigos .asm dos três programas – Relatório incluindo telas do MARS, mostrando a operação correta de cada um dos programas • Data Final de Entrega: 21/09/2009, até o fim do dia, por e-mail Fernando Moraes / César Marcon / Ney Calazans 5