Você está na página 1de 9

Guia Rpido MIPS

Tipos de Dados e Formataes Tipos de Dados: Todas as instrues so de 32 bits Byte = 8 bits Halfword = 2 bytes Word = 4 bytes Um caractere ocu a ! byte na mem"ria Um inteiro ocu a ! word#4 bytes$ na mem"ria Formataes: %&meros so re resentados normalmente' ()* 4 +aracteres ficam entre as as sim les' ()* ,a.trin/s ficam entre as as du las' ()* 0 ala1ra2 Registradores 32 re/istradores 3s re/istradores so rocedidos de 4 nas instrues 5uas formas de re resentao* %umero do re/istrador' 46 at7 43! Usando os nomes e8ui1alentes #1er abai)o$' ()* 4t!9 4s :e/istradores es eciais ara /uardar resultado das multi licaes e di1ises9 ;o e Hi (les no so acessados diretamente9 mas atra17s das instrues* mf<i #0mo1e from Hi2$ e mflo #0mo1e from ;o2$ = il<a comea da arte alta da mem"ria e cresce em direo a arte bai)a da mem"ria'

Estrutura do Programa =r8ui1o de te)to com a declarao de dados e o c"di/o do ro/rama' 3 ar8ui1o de1e ter a e)tenso 's ara ser usado com o simulador .>?@' = declarao de dados de1e 1ir anterior ao c"di/o do ro/rama'

Declarao de Dados: .eo do ro/rama identificado ela direti1a .data 3s nomes declarados das 1ariA1eis so usados no ro/rama' 5ados /uardados na mem"ria rinci al #:=@$ !digo: .eo do ro/rama identificado ela direti1a .te"t +ontBm o c"di/o do ro/rama #instrues$' >onto de inicio do c"di/o marcado elo label mai#: 3 final da main de1e usar a c<amada de saCda do sistema #e)it system call$' 3bs* 5ei)e uma lin<a 1aDia ao final do ro/rama ara facilitar o simulador .>?@' ome#trios: Tudo 8ue 1em a "s E em uma lin<a 7 considerado comentArio' Declarao de dados Formato das declaraes: nome* ti oFdeFdados 1alor#es$

cria uma 1ariA1el na mem"ria9 com o ti o es ecificado9 o nome e 1alores dados' 1alor#es$ usualmente do o 1alor inicialG ara reser1ar mem"ria use o ti o .space9 dA o n&mero de es aos a serem alocados' 3bs* ;abels sem re so se/uidos de dois ontos # * $
Exemplos: var1: array1: .word .byte 3 # cria uma varivel inteiro de valor 3

'a','b' # cria um vetor(array) de dois elementos j inicializados para a e b

array : .space !" # aloca !" espa#os consecutivos de bytes, n$o inicializados. %oderia ser usado como um vetor de !" caracteres ou um vetor de 1" inteiros, por e&emplo. (usar um comentrio para in'ormar (ue tipo de vetor vai ser usado ) uma boa prtica de pro*rama#$o).

I#strues $eitura%Escrita =cesso a mem"ria :=@ a enas com instrues de leitura e escrita' Todas outras instrues usam re/istradores como o erando' $eitura%Escrita de e#dereame#to direto $eitura: lw re/istrador9 osioFdaF:=@ H co ia word#4 bytes$ da osio da :=@ dada9 ara o re/istrador dado' lb re/istrador9 osioFdaF:=@ H co ia byte da osio da :=@ dada9 ara a arte bai)a do re/istrador dado'

li re/istrador9 1alor H carre/a o 1alor ara o re/istrador de destino' Escrita: sw re/istrador9 osioFdaF:=@ H escre1e a word do re/istrador dado na osio da :=@ dada' sb re/istrador9 osioFdaF:=@ H escre1e o byte da arte mais bai)a do re/istrador dado ara a osio da :=@
Exemplo: .data var1: .word main: .te&t lw li sw +t", var1 +t1, +t1, var1 # carre*a o conte,do de var1 em +t" # +t1 . # carre*a o conte,do de +t1 em var1

$eitura%Escrita de e#dereame#to i#direto e por &ase $eitura la re/istrador9 label H co ia o endereo do label na mem"ria ara o re/istrador dado (ndereamento indireto lw re/istrador!9 #re/istrador2$ H carre/a a word 8ue estA no endereo dado elo re/istrador29 ara o re/istrador! (ndereamento or base lw re/istrador!9 offset#re/istrador2$ H carre/a a word 8ue estA no endereo #re/istrador2 I offset$ ara o re/istrador! obs* o offset ode ser ne/ati1o Escrita (ndereamento indireto sw re/istrador!9 #re/istrador2$ H co ia a word no re/istrador! ara osio de mem"ria de endereo dado elo re/istrador2 (ndereamento or base sw re/istrador!9 offset#re/istrador2$ H co ia a word no re/istrador! ara osio de mem"ria de endereo dado or #re/istrador2Ioffset$ obs* o offset ode ser ne/ati1o
Exemplo: array1: main: .data .space 1 .te&t la +t", array1

# array de 3 inteiros # carre*a o ende#o do array1

li sw li sw li sw

+t1, +t1, +t1, +t1, +t1,

+t1, (+t") 13 !(+t") 01 2(+t")

# # # # # # #

para t" t1 . 1/ elemento do array1 . t1 . 13 / elemento do array1 . 13 t1 . 01 3/ elemento do array1 . 01

Mo'ime#tao mo1e re/istrador69 re/istrador! H co ia o 1alor do re/istrador! ara o re/istrador6 ()* mo1e 4t29 4t4 E t2 = t4 mf<i re/istrador6 H co ia o 1alor do re/istrador Hi ara o re/istrador6 ()* mf<i 4t! E t! = Hi mflo re/istrador6 H co ia o 1alor do re/istrador ;o ara o re/istrador6 ()* mflo 4t! E t! = ;o (ritim)ticas 5e1em usar 3 o erandos Todos o erandos so re/istradores 3 taman<o do o erando 7 word#4 bytes$ add re/istrador69 re/istrador!9 re/istrador2 H sal1a o resultado da soma do re/istrador! com o re/istrador2 no re/istrador6 obs* soma com sinal ()* add 4t69 4t!9 4t2 E t6 = t! I t2 addi re/istrador69 re/istrador!9 imediato H sal1a o resultado da soma do re/istrador! com o imediato no re/istrador6 obs* soma com sinal ()* addi 4t69 4t!9 J E t6 = t! I J addu re/istrador69 re/istrador!9 re/istrador2 H sal1a o resultado da soma do re/istrador! com o re/istrador2 no re/istrador6 obs* soma sem sinal sub re/istrador69 re/istrador!9 re/istrador2 H sal1a o resultado da subtrao do re/istrador! cK o re/istrador2 no re/istrador6 obs* subtrao com sinal ()* sub 4t69 4t!9 4t2 E t6 = t! H t2 subu re/istrador69 re/istrador!9 re/istrador2 H sal1a o resultado da subtrao do re/istrador! cK o re/istrador2 no re/istrador6 obs* subtrao sem sinal mul re/istrador69 re/istrador!9 re/istrador2 H multi lica o re/istrador! elo re/istrador2 e /uarda no re/istrador6 obs* multi licao sem o1erflow

mulo re/istrador69 re/istrador!9 re/istrador2 H multi lica o re/istrador! elo re/istrador2 e /uarda no re/istrador6 mulou re/istrador69 re/istrador!9 re/istrador2 H multi lica o re/istrador! elo re/istrador2 e /uarda no re/istrador6 obs* @ulti licao sem sinal mult re/istrador!9 re/istrador2 H multi lica o re/istrador! elo re/istrador2 e /uarda nos re/istradores es eciais obs* multi licao de 32Hbits 8ue /era um resultado de L4Hbits 8ue fica /uardado em Hi e ;o' ()* mult 4t39 4t4 E Hi9 ;o = t3 M t4 multu re/istrador!9 re/istrador2 H multi lica o re/istrador! elo re/istrador2 e /uarda nos re/istradores es eciais obs* multi licao de 32Hbits 8ue /era um resultado de L4Hbits 8ue fica /uardado em Hi e ;o' obs2* multi licao sem sinal ()* mult 4t39 4t4 E Hi9 ;o = t3 M t4 di1 re/istrador69 re/istrador!9 re/istrador2 H /uarda o resultado da di1iso inteira do re/! elo re/2 no re/istrador6 di1u re/istrador69 re/istrador!9 re/istrador2 H /uarda o resultado da di1iso inteira do re/! elo re/2 no re/istrador6 obs* di1iso sem sinal di1 re/istrador!9 re/istrador2 H di1ide o re/istrador! elo re/istrador2 e /uarda nos re/istradores es eciais obs* 3 8uociente fica /uardado em ;o e o resto fica /uardado em Hi di1u re/istrador!9 re/istrador2 H di1ide o re/istrador! elo re/istrador2 e /uarda nos re/istradores es eciais obs* 3 8uociente fica /uardado em ;o e o resto fica /uardado em Hi obs2* di1iso sem sinal rem re/istrador69 re/istrador!9 re/istrador2 H /uarda o resto da di1iso do re/istrador! elo re/istrador2 no re/istrador6 remu re/istrador69 re/istrador!9 re/istrador2 H /uarda o resto da di1iso do re/istrador! elo re/istrador2 no re/istrador6 obs* di1iso sem sinal' $!gicas and re/istrador69 re/istrador!9 re/istrador2 H /uarda o resultado da o erao l"/ica =%5 entre re/! e re/2 no re/istrador6 andi re/istrador69 re/istrador!9 imediato H /uarda o resultado da o erao l"/ica =%5 entre re/! e imed no re/istrador6

ne/ re/istrador69 re/istrador! H /uarda o in1erso do 1alor do re/istrador! no re/istrador6 ne/u re/istrador69 re/istrador! H /uarda o in1erso do 1alor do re/istrador! no re/istrador6 obs* sem o1erflow nor re/istrador69 re/istrador!9 re/istrador2 H /uarda o resultado da o erao l"/ica %3: entre re/! e re/2 no re/istrador6 not re/istrador69 re/istrador! H /uarda o resultado da ne/ao binAria do 1alor do re/istrador! no re/istrador6 or re/istrador69 re/istrador!9 re/istrador2 H /uarda o resultado da o erao l"/ica 3: entre re/! e re/2 no re/istrador6 ori re/istrador69 re/istrador!9 imediato H /uarda o resultado da o erao l"/ica 3: entre re/! e imed no re/istrador6 rol re/istrador69 re/istrador!9 imediato H /uarda o resultado da rotao ara es8uerda9 de distancia dada elo 1alor do imediato9 de bits do 1alor do re/istrador! no re/istrador6 ror re/istrador69 re/istrador!9 imediato H /uarda o resultado da rotao ara direita9 de distancia dada elo 1alor do imediato9 de bits do 1alor do re/istrador! no re/istrador6 sll re/istrador69 re/istrador!9 imediato H /uarda o resultado do deslocamento l"/ico ara es8uerda9 de distancia dada elo 1alor do imediato9 de bits do 1alor do re/istrador! no re/istrador6 sla re/istrador69 re/istrador!9 imediato H /uarda o resultado do deslocamento aritm7tico ara es8uerda9 de distancia dada elo 1alor do imediato9 de bits do 1alor do re/istrador! no re/istrador6 srl re/istrador69 re/istrador!9 imediato H /uarda o resultado do deslocamento l"/ico ara direita9 de distancia dada elo 1alor do imediato9 de bits do 1alor do re/istrador! no re/istrador6 sra re/istrador69 re/istrador!9 imediato H /uarda o resultado do deslocamento aritm7tico ara direita9 de distancia dada elo 1alor do imediato9 de bits do 1alor do re/istrador! no re/istrador6 )or re/istrador69 re/istrador!9 re/istrador2 H /uarda o resultado da o erao l"/ica N3: entre re/! e re/2 no re/istrador6 )ori re/istrador69 re/istrador!9 imediato H /uarda o resultado da o erao l"/ica N3: entre re/! e imed no re/istrador6

Des'io I#co#dicio#al b label H muda o re/istrador >+#re/istrador 8ue /uarda o endereo da r")ima instruo a ser e)ecutada$ ara o 1alor do label O label H muda o re/istrador >+#re/istrador 8ue /uarda o endereo da r")ima instruo a ser e)ecutada$ ara o 1alor do label Or re/istrador H muda o re/istrador >+#re/istrador 8ue /uarda o endereo da r")ima instruo a ser e)ecutada$ ara o endereo contido no re/istrador o#dicio#al be8 re/istrador69 re/istrador!9 label H des1ia ara o label9 se* re/istrador6 = re/istrador! blt re/istrador69 re/istrador!9 label H des1ia ara o label9 se* re/istrador6 P re/istrador! ble re/istrador69 re/istrador!9 label H des1ia ara o label9 se* re/istrador6 P= re/istrador! b/t re/istrador69 re/istrador!9 label H des1ia ara o label9 se* re/istrador6 Q re/istrador! b/e re/istrador69 re/istrador!9 label H des1ia ara o label9 se* re/istrador6 Q= re/istrador! bne re/istrador69 re/istrador!9 label H des1ia ara o label9 se* re/istrador6 R= re/istrador! *amada de su&roti#a Oal label H des1ia ara o label da subrotina' H co ia o >+ ara o re/istrador := Or ra H des1ia ara o endereo contido em := H usado ara faDer o retorno da subrotina ara o ro/rama' 3bs* se uma subrotina for c<amar outra subrotina9 ou 7 recursi1a9 o endereo em := serA sobrescrito9 ele de1eria ento ser em il<ado ara 8ue ele ossa ser reser1ado e recu erado ao termino das c<amadas ara dar continuidade ao ro/rama normalmente'

E#trada%Sa+da e c*amadas de sistema Usado ara ler ou im rimir 1alores ou strin/s da (ntradaK.aCda9 e indicar o fim de ro/rama Usar a c<amada de rotina s,scall 5e1eHse informar os 1alores necessArios nos re/istradores 169 a6 e a! .e <ou1er um retorno9 ele serA no re/istrador 16

= funo de im rimir strin/ es era uma strin/ terminada com caractere nulo' = direti1a 'asciiD cria uma strin/ terminada em caracter nulo' = leitura de inteiros9 floats e doubles lBem um li<a inteira9 inclusi1e o caractere de no1a lin<a' = funo de ler strin/s tem a mesma semSntica da rotina f/ets da biblioteca U%?N* H ;B at7 a osio nH! e termina com o caractere nulo' H .e ti1er menos de nH! caracteres na lin<a9 todos so lidos9 inclusi1e o caractere de no1a lin<a9 e a strin/ 7 terminada com o caractere nulo' = funo e)it finaliDa o ro/rama'
Exemplo: 3mprime o inteiro (ue est em t li +v", 1 # carre*a o c4di*o de imprimir int. move +a", +t # move o inteiro para a" syscall # c5ama o 67 para realizar a opera#$o Exemplo: 89 o inteiro, *uardando na memoria, na posi#$o de mem4ria com label int:value (declarada na sess$o de data) li +v", # carre*a o c4di*o de ler inteiro syscall # c5ama o 67 para realizar a opera#$o sw +v", int:value # o valor 'oi retornado em v" Exemplo: 3mprime uma strin* .data strin*1 .asciiz ;'rase para imprimir.<n; # .asciiz directive ma=es strin* null terminated main: .te&t li la +v", ! # carre*a o c4di*o de imprimir strin* +a", strin*1 # carre*a o endere#o da strin* a ser impressa em a" syscall # c5ama o 67 para realizar a opera#$o

Exemplo: >erminando o pro*rama li +v", 1" # carre*a o c4di*o da opera#$o

syscall

# c5ama o 67 para realizar a opera#$o

Re-er.#cias: <tt *KKmsdn'microsoft'comKenHusKlibraryKms2J3J!2T28U.'86T2V'as ) <tt *KKwww'doc'ic'ac'uWKlabKsecondyearKs imKnode!3'<tml <tt *KKlo/os'cs'uic'eduK3LLKnotesK@?>.T26XuicWT26Tutorial'<tm

Você também pode gostar