Programação em assembler - mips

Páginas: 9 (2016 palavras) Publicado: 8 de maio de 2013
Guia Rápido 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 programaidentificado 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 aofinal 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á onúmero de espaços a serem alocados.
Obs: Labels sempre são seguidos de dois pontos ( : )

Exemplos:
var1: .word 3 # cria uma variável inteiro de valor 3

array1: .byte 'a','b' # cria um vetor(array) de dois elementos
já inicializados para a e b

array2: .space 40
# aloca 40 espaços consecutivos de bytes, não inicializados. Poderia ser usado como um vetorde 40 caracteres ou um vetor de 10 inteiros, por exemplo. (usar um comentário para informar que tipo de vetor vai ser usado é uma boa prática de programação).

Instruções

Leitura/Escrita
Acesso a memória RAM apenas com instruções de leitura e escrita.
Todas outras instruções usam registradores como operando.

Leitura/Escrita de endereçamento direto
Leitura:
lw registrador,posição_da_RAM
- copia word(4 bytes) da posição da RAM dada, para o registrador dado.

lb registrador, posição_da_RAM
- copia byte da posição da RAM dada, para a parte baixa do registrador dado.

li registrador, valor
- carrega o valor para o registrador de destino.

Escrita:
sw registrador, posição_da_RAM
- escreve a word do registrador dado na posição da RAM dada.sb registrador, posição_da_RAM
- escreve o byte da parte mais baixa do registrador dado para a posição da RAM

Exemplo:
.data
var1: .word 23

.text
main:
lw $t0, var1 # carrega o conteúdo de var1 em $t0
li $t1, 5 # $t1 = 5
sw $t1, var1 # carrega o conteúdo de $t1 em var1


Leitura/Escrita de endereçamento indireto e por base
Leitura
la registrador, label- copia o endereço do label na memória para o registrador dado

Endereçamento indireto
lw registrador1, (registrador2)
- carrega a word que está no endereço dado pelo registrador2, para o registrador1

Endereçamento por base
lw registrador1, offset(registrador2)
- carrega a word que está no endereço (registrador2 + offset) para o registrador1
obs: o offset...
Ler documento completo

Por favor, assinar para o acesso.

Estes textos também podem ser interessantes

  • Programação assembler
  • Mips
  • mips
  • Mips
  • Mips
  • Mips
  • mips
  • Mips

Seja um membro do Trabalhos Feitos

CADASTRE-SE AGORA!