Arquitetura de Computadores - Tutorial SPIM

download Arquitetura de Computadores - Tutorial SPIM

of 3

description

Tutorial básico do SPIM

Transcript of Arquitetura de Computadores - Tutorial SPIM

  • ACLEI 1/3 1.ano/2.sem.,2009/2010,DEEC2010

    ArquitecturadeComputadoresDEPARTAMENTODEENGENHARIAELECTROTCNICAEDECOMPUTADORES

    FACULDADEDECINCIAETECNOLOGIAUNIVERSIDADEDECOIMBRA

    Lab5

    LinguagemAssemblyparaMIPSesimuladorSPIM

    Objectivo: Inicializao programao em assembly para MIPS com recurso aosimuladorSPIM

    1. InstalaodoSPIMO SPIM um simulador do processadorMIPS que permite executar programas em

    assemblyparaMIPS32.Temalgumas funcionalidades simplesdedebuggereumconjuntobsicode funesdesistemasoperativoparaentrada/sada.OSPIMnoexecutaficheirosbinrios(compilados).

    NapginadacadeiraencontraolinkparaoSPIM1,ondepodeencontrarversesparadiferentesplataformaseinstruesdeinstalao.NosPCsdoslaboratriosestinstaladaaverso PCSPIM para Microsoft Windows, semelhante verso XPSIM em Linux. Odocumento Getting StartedwithPCSpim2descreveo funcionamentoda versoPCSPIM.Como referncia do conjunto de instruesMIPS32 e do SPIM tem namesma pgina odocumentoAppendixA:Assemblers,Linkers,andtheSPIMSimulator3.

    2. CorrerprogramasnoSPIMOSPIMumsimuladorque leexecutaprogramasescritosem linguagemassembly

    MIPS32, disponibilizando um debugger simples e um conjunto mnimo de servios dosistemaoperativo.OSPIMnoexecutaprogramasbinrios.

    OsprogramasemassemblyMIPSparacorreremnoSPIMdevemficaremficheirosdetextocomaextenso*.s.Aexecuodoprogramatemincionolabelmain:(talcomoemC) e termina com jr $ra.O registo $ra fica sempre com o endereo de retorno aochamarumafuno,eomainteminadamesmaformaquequalqueroutrafuno.

    Depoisde iniciaroPCSIM4,deve carregaro seuprogramanoboto LoadoumenuFile/Load. No menu Simulator existem diversas ferramentas que permitem controlar aexecuo do programa, assim como tambm alterar registos e memria. A janela doprogramaestdivididaemquatropainis,sendoapresentadosnopaineldecimaosvalores

    1SPIMAMIPS32Simulator:http://pages.cs.wisc.edu/~larus/spim.html2http://pages.cs.wisc.edu/~larus/PCSpim.pdf(MSWindowsversion)3http://pages.cs.wisc.edu/~larus/HP_AppA.pdf4Ao instalar em Windows o PCSPIM deve verificar se, depois de iniciar o programa, no menuSimulator/Settings tem Loadexception fileC:\Programas\PCSpim\exceptions.s.TenhaematenoqueemplataformasWindows64bits,deverprocuraremC:\Programas(x86)

  • Lab5AC DEEC/FCTUC

    ACLEI 2/3 1.ano/2.sem.,2009/2010,DEEC2010

    de todos os registos; os dois painis imediatamente abaixo apresentam as instrues doprograma e os dados, respectivamente; o ltimo painel dedicado s mensagens doPCSpim. Para informaes mais detalhadas consulte o documento Getting Started withPCSpim.

    Para testar a sua instalao execute o programa lab5_hello.s, que deve escrever afraseHelloLab5naconsolaeterminar.Leiacomcuidadooprogramaparaperceberoseufuncionamento.AltereapenasumainstruodoprogramaparaescreverHelloLab6.

    3. UmpequenoprogramaparaMIPSEscrevaumpequenoprogramalab5_3.sque,dadososvaloresem$s0e$s1,coloque

    nos registos temporrios $t0 a $t4 os seguintes valores (considere que os valores tmmenosde32bits):

    $t0 = $s0 $t1 = $s1 $t2 = $t0 + $t1 $t3 = 2 $t2 #permetro $t4 = $t0 $t1 #rea Paratestaroprograma,recorraaoSimulator/Setparacolocarnsregistos$s0e$s1os

    valoresiniciais,etesteoprogramapassoapasso(podecolocarumbreakpointnoinciodoprogramaedepoisfazerSingleStep).

    4. DebugdeumprogramaparaMIPSDescubraoserrosnociclodoprogramalab5_4.s.Ociclodeviacopiarumasequncia

    de inteirosapartirdoendereodememria$a0paraumazonaapartirdoendereodememria$a1,parandoaolerumvalorazero.Onmerodeinteiroscopiados(atencontrarozero,semcontarcomozero),deveficarem$v0.

    OprogramacorrespondecompilaodoseguinteprogramaemC:#include int source[] = {2, 1, 4, 8, 5, 9, 0}; int dest[10]; int main ( ) { int k; for (k=0; source[k]!=0; k++) { dest[k] = source[k]; } printf ("%d values copied\n", k); return 0; }

    Crieumaversocorrigidadoprograma,lab5_4ok.s,etestenovamente.Altereagoraocdigoobtidodeformaaapenasfaaacontagemdosnmerospares

    contadoseguardecomolab3_4par.s.

  • Lab5AC DEEC/FCTUC

    ACLEI 3/3 1.ano/2.sem.,2009/2010,DEEC2010

    5. CompilarCmoparaMIPSassemblyConvertaparaassemblyetestenoSPIMosseguintesprogramasemC:1) if($s3!=0) $s1=$s0; else $s1=2; 2) if($s0>0) printf(OK); else printf(No); Dica:Analiseoprogramainicialdetesteparavercomoescrevernaconsola.3) if($s1>8) $s1=$s1+15; else $s1=$s1-8; 4) for($s1=0;$s1