Skip to content

chavesfop/INE5607

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

INE5607

Organização e Arquitetura de Computadores
##MIPS ###Operações aritméticas

  • add
  • addi
  • sub
  • subi (não existe, utiliza addi, com um parametro negativo)

###Operações lógicas

OperaçãoOperador C / JavaInstrução MIPS
Binary Shift Left << sll
Binary Shift Right >> srl
Bit-by-bit AND & and, andi
Bit-by-bit OR | or,ori
Bit-by-bit NOT ~ nor*
*para realizar o nor realizar um not, deve-se fazer: nor $s0,$s0,$zero.
de outra forma nor equivale a x = ~(x|y)

###Carregamento de constantes Constantes no MIPS, tem no máximo 16bits, portanto para

32bits:

Desejamos carregar por exemplo: 0xFFFFAAAA
ori$t0,$zero,0xFFFF0x0000FFFF
sll$s0,$t0,160xFFFF0000
oris0,$s0,0xAAAA0xFFFFAAAA

###Instruções de tomada de decisão if-then-else

  • Desvios
  • If-then-else
  • Comparadores
  • Switch

#####Rótulos / Labels Apontam um endereço de memória por um nome especificado.
label: add $s1,$s2,$s0
agora quando referenciado label, sabemos que vai pra parte do processamento que tem label: no início.

#####Desvios A label deve estar em até 2^16 instruções para continuar sendo identificada, pois as instruções ocupam 16 bits.

*Desvios condicionais

beq: branch on equal
beq $s0, $s1, Igual #Se $s0==$s1, desvie para o endereço do label Igual

bne: branch on not equal
bne $s0, $s1, Diferente #Se $s0!=$s1, desvie para o endereço do label Diferente

*Desvios incondicionais

j (Jump)
j Fim # Desvie para o endereço do label Fim
O jump deve estar em uma instrução a 2^26, pois a operação ocupa 6 bits.

jal (Jump and Link)
Salva o endereço atual em $ra e desvie.
Suporte para chamadas de procedimentos.

jr (Jump Register)
Desvie para o endereço no registrador X.
Suporte para retorno de procesimentos.

#####Comparadores

sit (Set if less than)

portanto pra representar: if (a<b){c=a;}else{c=b;}, temos:
sit $t0,$s1,$s2
beq $t0,$zero,else
add $s0,$zero,$s1
j exit
else:add $s0, $zero, $s2
exit: #... restante das instruções.

siti (Set if less than imediate)

portanto pra representar: if (a<10){c=a;}else{c=10;}, temos:
siti $t0,$s1,10
beq $t0,$zero,else
add $s0,$zero,$s1
j exit
else:addi $s0, $zero, 10
exit: #... restante das instruções.

About

Organização e Arquitetura de Computadores

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors