Programação em assembler - mips
Tipos de Dados e Formatações
Tipos de Dados: Todas as instruções são de 32 bits Byte = 8 bits Halfword = 2 bytes Word = 4 bytes Um caractere ocupa 1 byte na memória Um inteiro ocupa 1 word(4 bytes) na memória
Formatações: Números são representados normalmente. Ex: 4 Caracteres ficam entre aspas simples. Ex: ‘a’ Strings ficam entre aspas duplas. Ex: “palavra”
Registradores
32 registradores
Os registradores são procedidos de $ nas instruções
Duas formas de representação: Numero do registrador. $0 até $31 Usando os nomes equivalentes (ver abaixo). Ex: $t1, $sp
Registradores especiais para guardar resultado das multiplicações e divisões, Lo e Hi Eles não são acessados diretamente, mas através das instruções: mfhi (“move from Hi”) e mflo (“move from Lo”)
A pilha começa da parte alta da memória e cresce em direção a parte baixa da memória.
[pic]
Estrutura do Programa
Arquivo de texto com a declaração de dados e o código do programa. O arquivo deve ter a extensão .s para ser usado com o simulador SPIM. A declaração de dados deve vir anterior ao código do programa.
Declaração de Dados: Seção do programa identificado pela diretiva .data Os nomes declarados das variáveis são usados no programa. Dados guardados na memória principal (RAM)
Código: Seção do programa identificado pela diretiva .text Contêm o código do programa (instruções). Ponto de inicio do código marcado pelo label main: O final da main deve usar a chamada de saída do sistema (exit system call). Obs: Deixe uma linha vazia ao final do programa para facilitar o simulador SPIM.
Comentários: Tudo que vem após # em uma linha é considerado comentário.
Declaração de dados
Formato das declarações: nome: tipo_de_dados valor(es)
cria uma variável na memória, com o tipo especificado, o nome e valores dados. valor(es) usualmente dão o valor inicial; para reservar memória use o tipo .space, dá o