Introdução à Arquitetura de Computadores/Representação das Instruções
Sabemos que tudo dentro do computador é representado por meio de bits - que podem ter o valor de 0s e 1s. Até mesmo as instruções de um processador MIPS. Vamos estudar agora como uma instrução é representada a nível de bits. O MIPS reconhece 3 famílias diferentes de instruções. São elas:
As Instruções Tipo R
[editar | editar código-fonte]Como exemplo de instruções do tipo R vistas, temos: add, addu, sub, subu, or e and.
Elas são codificadas da seguinte forma:
[o][o][o][o][o][o] - [u][u][u][u][u] - [t][t][t][t][t] - [d][d][d][d][d] - [s][s][s][s][s] - [f][f][f][f][f][f]
Onde a letra "o", representa o opcode, ou Código de Operação. Ele avisa mais-ou-menos o que a instrução vai fazer. Por exemplo, uma instrução de soma add é muito semelhante à instrução xor que faz um XOR lógico bit-a-bit. A única diferença é que na soma, devemos armazenar um bit a mais para representar o "vai um" quando somamos 1+1. Logo, as duas instruções tem o mesmo opcode.
As letras "u" e "t" representam os operandos das instruções. Ou melhor, os registradores nos quais estão os operandos.
A letra "d" é o registrador de destino onde deve ser armazenado o resultado.
A letra "s" ou Shampt representa o deslocamento de bits, ou seja um shift que pode se usado após a operação.
Finalmente, a letra "f" é o código de função. É por meio dela que diferenciamos instruções semelhantes que tem o mesmo opcode, como add e or.
As Instruções Tipo I
[editar | editar código-fonte]Como exemplo deste tipo de instrução, podemos citar todas aquelas que contam com um valor imediato, como addi, subi, ori, beq e bnq.
Eles são codificados da seguinte forma:
[o][o][o][o][o][o] - [u][u][u][u][u] - [t][t][t][t][t] - [i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i]
A letra "o" representa o código da instrução. A letra "u" represeenta o número do registrador onde a o resultado da operação é colocado. Já a letra "t" representa o número do registrador em que está um dos operandos. Já o "i" representa o número imediato. Agora vemos o porquê do valor passado como imediato nunca poder exceder os 16 bits.
As Instruções Tipo J
[editar | editar código-fonte]A única instrução vista no capítulo anterior do tipo J é a j. Ela é codificada da seguinte forma:
[o][o][o][o][o][o] - [d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d][d]
O "o" representa o código da operação j e d representa o destino.