Operandos Imediatos e Constantes no MIPS

instrução MIPS LW e SW IF Simples no MIPS

Oi pessoal! Tudo bem com todo mundo? Espero que esteja tudo certo! Dando continuidade a esta série, que trata do Conjunto de Instruções MIPS, hoje vou mostrar para vocês como trabalhar com instruções em que um dos operandos é um número, e não um registrador, como vimos até agora. Esses “números” são chamados de operandos imediatos ou então de operandos constantes.

Instruções MIPS com Operandos Imediatos

Até o momento, praticamente todas as instruções que aprendemos operavam da seguinte forma:

Operação registrador, registrador, registrador

Por exemplo:

ADD $t0, $s0, $s1

OR $t1, $s3, $s4

Mas, e quando precisarmos utilizar um valor diretamente, como nas instruções de alto nível abaixo:

a = b + 25;

i = i + 1; ( ou i++)

Como seria? É certo que muitas vezes um programa usará um valor imediato em uma ou várias operações, então, os projetistas do MIPS, prevendo este uso, desenvolveram as instruções imediatas, que oferecem versões das instruções aritméticas e lógicas, em que um dos operandos é um valor imediato, daí a vogal i é adicionada a essa instrução, para diferenciá-la da instrução MIPS tradicional. Exemplos:

addi rt, rs, imm           #operação soma imediata, opcode 8

ori rt, rs, imm             #operação lógica OR imediata, opcode 13

xori rt, rs, imm           #operação lógica XOR imediata, opcode 14

slti rt, rs, imm             #instrução SLT imediata, opcode 10

Em todas as instruções, o resultado é armazenado no registrador rt, e imm significa IMEDIATO. Incluindo valores imediatos dentro das instruções aritméticas, as operações tornam-se mais rápidas, pois ler as constantes (valores imediatos) da memória é um processo bem mais lento. O formato da instrução é do tipo I e o número a ser usado neste campo não pode extrapolar essa quantidade de bits.

Opcode

rs

rt

imm

6 bits

5 bits

5 bits

16 bits

Constante Zero

Existe um registrador chamado $zero que é muito útil e acaba por simplificar o conjunto de instruções. Algumas operações são realizadas em cima de valores zeros, portanto, ter um registrador com apenas esse valor constante zero diminui a necessidade de outras operações. Portanto, sempre que for necessário manipular o valor zero em alguma operação, lembre-se deste registrador.

ADDI

Vou demonstrar pelo menos um exemplo de instrução imediata. A partir desta, ficará mais fácil para vocês realizarem a compilação manual das outras. Tomando como exemplo a instrução dada no início deste artigo

a = b + 25;

Vejamos como fica:

Linguagem de Montagem:     ADDI $t0, $s0, 25      #$t0 = $s0 + 25

Linguagem de Máquina:        ADDI $8, $16, 25      #$8 = $16 + 25

Representação:

Opcode

rs

rt

imm

8

8

16

25

Código de Máquina:              00100001000100000000000000011001

Conclusão

Espero que tenham conseguido entender pessoal, mas caso existam dúvidas, por favor, deixem ali embaixo nos comentários que eu tentarei responder o mais breve possível. Para conhecer mais detalhes sobre o conjunto de instruções do MIPS, sugiro consultar o Apêndice B do livro que é referência para a escrita destes artigos: PATTERSON, D. A.; HENNESSY, J. L. “Organização e Projeto de Computadores: A Interface Hardware/Software”. 4.ª Edição, Rio de Janeiro: Elsevier, 2014.

Outros artigos da série

<< Endereços de Memória no MIPSCompilando Arrays com índice variável no MIPS >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Hardware » Sistemas Digitais » Operandos Imediatos e Constantes no MIPS
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Marcus
Marcus
01/08/2018 17:30

obrigado professora salvou demaaaaaaais

Elaine Cecília Gatto
Elaine Cecília Gatto
Reply to  Marcus
17/10/2018 14:48

Opa!!! fico feliz em ajudar =)

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 

Soluções inteligentes para acionamento de MOSFETs/IGBTs com família STDRIVE

Data: 08/10 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link