Pra´cticas de Introduccio´n a la Arquitectura de Computadores con el simulador SPIM Sergio Barrachina Mir Maribel Castillo Catala´n Jose M. Claver Iborra Juan C. Ferna´ndez Fdez (cid:13)c 2007SergioBarrachinaMir,MaribelCastilloCatala´n,Jose´M.Cla- ver Iborra y Juan Carlos Ferna´ndez Ferna´ndez. Reservados todos los derechos. Esta((Edicio´nProvisional))puedereproducirseexclusivamenteconfi- nes autodidactas o para su uso en centros pu´blicos de ensen˜anza. En el segundo caso, tan so´lo se cargara´n al estudiante los costes de re- produccio´n. La reproduccio´n total o parcial con a´nimo de lucro o con cualquierfinalidadcomercialquedaestrictamenteprohibidasalvoque cuenteconelpermisoescritodelosautores. P ´ ROLOGO Este libro de pra´cticas esta´ dirigido a estudiantes de primeros cursos de Ingenier´ıasTe´cnicasInforma´ticaseIngenier´ıasInforma´ticasquecursenasig- naturas de introduccio´n a la Arquitectura de Computadores, y en general, a aquelloslectoresquedeseenaprenderArquitecturadeComputadoresporme- diodelarealizacio´ndeejerciciosconlenguajeensamblador. Pese a que el hilo conductor del libro es la programacio´n en lenguaje en- samblador, el lector no debe confundirlo con un curso de programacio´n en ensamblador. El objetivo de este libro no es el de ensen˜ar a programar en en- samblador,sinoeldeayudaraqueellectorasimileycomprenda,pormediode laprogramacio´nenensamblador,losconceptosfundamentalesdeArquitectura de Computadores. En particular, se abordan los siguientes temas: representa- cio´n de la informacio´n, tipos de datos, el juego de instrucciones, registros, organizacio´n de la memoria, programacio´n de computadores a bajo nivel, re- lacio´nentrelaprogramacio´nenunlenguajedealtonivelyelfuncionamiento delprocesadorytratamientodeinterrupcionesyexcepciones. Puestoquesepretendefavorecerlacomprensio´ndedichosconceptospor mediodelarealizacio´ndepra´cticasenensamblador,cobraespecialimportan- cialaeleccio´ndelprocesadorquesera´ objetodeestudio.Analizandoque´ pro- cesadores han sido escogidos, a lo largo de los an˜os, por las asignaturas de introduccio´nalaArquitecturadeComputadoresdedistintasUniversidades,se puede ver que han sido varios los elegidos y que la eleccio´n de uno u otro ha estadofuertementecondicionadoporlasmodas. En cualquier caso, es posible constatar que aquellas elecciones que han contado con mayor aceptacio´n, y que han permanecido por ma´s tiempo, han estadosiemprerelacionadasconlaaparicio´ndeprocesadoresque,porsucon- cepcio´nydisen˜o,hanrevolucionadoelcampodeloscomputadores.Cabedes- tacar,entreestosprocesadores,lossiguientes:elPDP11deDEC,elMC68000 deMotorola,el8088/86deIntelyelR2000/3000deMIPS. El procesador MC68000 de Motorola ha sido ampliamente utilizado, y lo esau´nhoyend´ıa,enlaspra´cticasdelasasignaturasdeArquitecturadeCom- putadoresdemuchasUniversidades.Lomismosepuededecirdelprocesador I II 8086deIntel.Aunqueesteu´ltimoenmenormedida.ElprocesadordeMotoro- latieneasufavorlaortogonalidaddesujuegodeinstruccionesylaexistencia dediferentesmodosprioritariosdefuncionamiento.EnelcasodeIntel,elmo- tivodeterminanteparasuadopcio´nhasidosinduda,laampliadifusio´ndelos computadorespersonales(PCs)deIBMycompatibles. Sin embargo, el procesador ma´s extendido en la actualidad en el a´mbito delaensen˜anzadeArquitecturadeComputadores,yelqueseproponeeneste libro, es el MIPS321. Dicho procesador, por un lado, mantiene la simplicidad delosprimerosprocesadoresRISCy,porotro,constituyelasemillademuchos delosdisen˜osdeprocesadoressuperescalaresactuales. Debido a la simplicidad del juego de instrucciones del MIPS32, es rela- tivamente fa´cil desarrollar pequen˜os programas en ensamblador y observar el efecto de su ejecucio´n. Por otro lado, al ser su arquitectura la semilla de mu- chos de los disen˜os de procesadores superescalares actuales, es fa´cil extender losconocimientosadquiridosensuestudioaarquitecturasma´savanzadas. Dichodeotraforma,loquehaceido´neoalMIPS32parautilizarloenlaen- sen˜anzadeArquitecturadeComputadoresesquesetratadeunprocesadorreal perolosuficientementesencillocomoparaestudiarlosindemasiadascompli- caciones,yalavez,puedeservirdebaseparaelestudiodearquitecturasma´s avanzadas. Otro punto a favor de la utilizacio´n del MIPS32, es la existencia de si- muladores que permiten comprobar co´modamente su funcionamiento, sin la necesidad de tener acceso a un computador real basado en dicho procesador. En este libro se propone el simulador SPIM de James Larus [Lar]. Puede ob- tenersedeformagratuitadesdelapa´ginawebdelautoryesta´ disponibletanto paraWindowscomoparaGNU/Linux. En cuanto a la organizacio´n del presente libro, simplemente decir que se ha hecho un esfuerzo importante para que sea, en la medida de lo posible, autocontenido.As´ı,muchosdelosconceptosteo´ricosnecesariospararealizar losejerciciosqueseproponen,seintroducenconformesonrequeridos. En cualquier caso,no hay que perder devista que el libro seofrece como complementoaunaformacio´nteo´ricaenArquitecturadeComputadoresy,por tanto, gran parte de los conceptos generales o ma´s espec´ıficos se han dejado forzosamentefuera.Nuestraintencio´nnovama´salla´ deladeofreceruncom- plementoeminentementepra´cticoaunaformacio´nteo´ricaenArquitecturade Computadores. 1Ensuversio´nnosegmentadaysininstruccionesretardadasdecarga,almacenamientoy salto. III En cuanto a la formacio´n teo´rica en Arquitectura de Computadores, con- sideramosque comolibro dereferencia sepodr´ıautilizar ellibro((Estructura y disen˜o de computadores: interficie circuiter´ıa/programacio´n)), de David A. PattersonyJohnL.Hennesy[Pat00],enelquetambie´nseestudiaelprocesa- dorMIPS32. De esta forma, un curso introductorio a la Arquitectura de Computadores podr´ıautilizarellibro((Estructuraydisen˜odecomputadores:interficiecircui- ter´ıa/programacio´n)),deDavidA.PattersonyJohnL.Hennesy[Pat00]como referencia de la parte de teo´rica de la asignatura y el presente libro para la realizacio´ndelaspra´cticasdelaboratoriodedichaasignatura. Convenios tipogra´ficos Se presentan a continuacio´n los convenios tipogra´ficos seguidos en la re- daccio´ndeestelibro. Paradiferenciarunnu´merodeltextoquelorodea,elnu´meroserepresenta utilizandounafuentemonoespaciada,comoporejemploen:1024. Paraexpresarunnu´meroenhexadecimal,e´steseprecededelprefijo((0x)), p.e.0x4A.Sielnu´meroexpresadoenhexadecimalcorrespondeaunapalabra de32bits,e´steaparecedelasiguienteforma:0x00400024.Esdecir,conun pequen˜oespacioenmedio,parafacilitarsulectura. Paraexpresarunnu´meroenbinarioseutilizaelsub´ındice(( )),p.e.0010 . Si el nu´mero expresado en binario corresponde a una palabra de 32 bits, se representaconunpequen˜oespaciocada8bits,parafacilitarsulectura,p.e.: 00000001001000110100010101100111 . Para diferenciar una sentencia en ensamblador del texto que la rodea, se utilizaelsiguienteelsiguienteformato:((la $a0, texto)).Cuandosehacere- ferenciaaunregistro,e´stesemarcadelasiguienteforma:$s0. Losco´digosofragmentosdeco´digoserepresentandelasiguienteforma: . hola-mundo.s 1 .data # Zona de datos 2 texto: .asciiz ”¡Hola mundo!” 3 4 .text # Zona de instrucciones 5 main: li $v0, 4 # Llamada al sistema para print str 6 la $a0, texto # Direccio´n de la cadena 7 syscall # Muestra la cadena en pantalla En la parte superior derecha se muestra el nombre del fichero asociado a dicho co´digo. En el margen izquierdo se muestra la numeracio´n correspon- dienteacadaunadelasl´ıneasdelco´digorepresentado.Estanumeracio´ntiene porobjetofacilitarlareferenciaal´ıneasconcretasdellistadoy,naturalmente, IV noformapartedelco´digoenensamblador.Conelfindefacilitarlalecturadel co´digo, se utilizan diferentes formatos para representar las palabras reserva- das y los comentarios. Por u´ltimo, y para evitar confusiones, los espacios en blancoenlascadenasdetextoserepresentanmedianteelcara´cter(( )). Encuantoalosbloquesdeejercicios,e´stosaparecendelimitadosentredos l´ıneas horizontales punteadas. Cada uno de los ejercicios del libro posee un identificador u´nico. De esta forma, puede utilizarse dicho nu´mero para refe- renciar un ejercicio en particular. A continuacio´n se muestra un ejemplo de bloquedeejercicios: .............................. EJERCICIOS..................................... ·1 Localizalacadena((”Hola mundo”))enelprogramaanterior. ·2 Localizaelcomentario((# Zonade datos))enelprogramaanterior. ...................................................................... Agradecimientos Este texto no es obra u´nicamente de sus autores. Es fruto de la experien- cia docente del profesorado involucrado en las asignaturas de ((Introduccio´n a los Computadores)), ((Arquitectura de Computadores)) y ((Estructura y Tec- nolog´ıadeComputadores))delastitulacionesdeIngenier´ıaInforma´tica,Inge- nier´ıaTe´cnicadeSistemaseIngenier´ıaTe´cnicadeGestio´ndelaUniversidad Jaume I de Castello´n. En particular, se ha enriquecido especialmente con las aportaciones, comentarios y correcciones de los siguientes profesores del de- partamento de Ingenier´ıa y Ciencia de los Computadores de la Universidad Jaume I: Eduardo Calpe Marza´, Germa´n Leo´n Navarro, Rafael Mayo Gual, FernandoOcheraBaganyXimoTorresSospedra. Tambie´nnosgustar´ıaagradeceralossiguientesestudiantesdelaUniversi- dadJaumeIelquerevisaranconimpagableintere´sunadelasprimerasversio- nes del manuscrito: Nicola´s Arias Sidro, Jose´ Cerisuelo Vidal, Ine´s de Jesu´s Rodr´ıguez,Joaqu´ınDelf´ınBacheroSa´nchez,MariamFausVillarrubia,Rober- toGarc´ıaPorcella´,DanielGimenoSol´ısySergioLo´pezHerna´ndez. Paratodosellos,nuestroma´ssinceroagradecimiento. Nos gustar´ıa, adema´s, agradecer de antemano la colaboracio´n de cuantos nos hagan llegar aquellas erratas que detecten o las sugerencias que estimen oportunas sobre el contenido de este libro. De esta forma, esperamos poder mejorarloenfuturasediciones. ´ I NDICE GENERAL I´ndicegeneral V 1 Introduccio´nalsimuladorSPIM 1 1.1. Descripcio´ndelsimuladorSPIM . . . . . . . . . . . . . . . . 2 1.2. SintaxisdellenguajeensambladordelMIPS32 . . . . . . . . 13 1.3. Problemasdelcap´ıtulo . . . . . . . . . . . . . . . . . . . . . 15 2 Datosenmemoria 17 2.1. Declaracio´ndepalabrasenmemoria . . . . . . . . . . . . . . 17 2.2. Declaracio´ndebytesenmemoria . . . . . . . . . . . . . . . . 19 2.3. Declaracio´ndecadenasdecaracteres . . . . . . . . . . . . . . 20 2.4. Reservadeespacioenmemoria . . . . . . . . . . . . . . . . . 21 2.5. Alineacio´ndedatosenmemoria . . . . . . . . . . . . . . . . 21 2.6. Problemasdelcap´ıtulo . . . . . . . . . . . . . . . . . . . . . 22 3 Cargayalmacenamiento 25 3.1. Cargadedatosinmediatos(constantes) . . . . . . . . . . . . . 26 3.2. Cargadepalabras(dememoriaaregistro) . . . . . . . . . . . 29 3.3. Cargadebytes(dememoriaaregistro) . . . . . . . . . . . . . 30 3.4. Almacenamientodepalabras(deregistroamemoria) . . . . . 31 3.5. Almacenamientodebytes(bytesderegistroamemoria) . . . . 32 3.6. Problemasdelcap´ıtulo . . . . . . . . . . . . . . . . . . . . . 33 4 Operacionesaritme´ticas,lo´gicasydedesplazamiento 35 4.1. Operacionesaritme´ticas . . . . . . . . . . . . . . . . . . . . . 36 4.2. Operacioneslo´gicas . . . . . . . . . . . . . . . . . . . . . . . 39 4.3. Operacionesdedesplazamiento . . . . . . . . . . . . . . . . . 41 4.4. Problemasdelcap´ıtulo . . . . . . . . . . . . . . . . . . . . . 43 5 Operacionesdesaltocondicionalydecomparacio´n 45 5.1. Operacionesdesaltocondicional . . . . . . . . . . . . . . . . 46 V VI ´Indicegeneral 5.2. Operacionesdecomparacio´n . . . . . . . . . . . . . . . . . . 48 5.3. Evaluacio´ndecondiciones . . . . . . . . . . . . . . . . . . . 48 5.4. Problemasdelcap´ıtulo . . . . . . . . . . . . . . . . . . . . . 53 6 Estructurasdecontrolcondicionalesyderepeticio´n 55 6.1. Estructurasdecontrolcondicionales . . . . . . . . . . . . . . 55 6.2. Estructurasdecontrolrepetitivas . . . . . . . . . . . . . . . . 60 6.3. Problemasdelcap´ıtulo . . . . . . . . . . . . . . . . . . . . . 63 7 Introduccio´nalagestio´ndesubrutinas 65 7.1. Llamadayretornodeunasubrutina . . . . . . . . . . . . . . 66 7.2. Pasodepara´metros . . . . . . . . . . . . . . . . . . . . . . . 70 7.3. Problemasdelcap´ıtulo . . . . . . . . . . . . . . . . . . . . . 77 8 Gestio´ndesubrutinas 79 8.1. Lapila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 8.2. Bloquedeactivacio´ndelasubrutina . . . . . . . . . . . . . . 84 8.3. Problemasdelcap´ıtulo . . . . . . . . . . . . . . . . . . . . . 98 9 Gestio´ndelaentrada/salidamedianteconsultadeestado 101 9.1. Dispositivosperife´ricosenelsimuladorSPIM . . . . . . . . . 104 9.2. Entradadedatosdesdeelteclado . . . . . . . . . . . . . . . . 106 9.3. Salidadedatosporpantalla . . . . . . . . . . . . . . . . . . . 107 9.4. Entrada/Salidadedatos . . . . . . . . . . . . . . . . . . . . . 109 9.5. Problemasdelcap´ıtulo . . . . . . . . . . . . . . . . . . . . . 110 10 Gestio´ndelaentrada/salidamedianteinterrupciones 111 10.1. Registrosparaeltratamientodelasexcepciones . . . . . . . . 113 10.2. Tratamientodelasexcepciones . . . . . . . . . . . . . . . . . 117 10.3. Opciones del programa SPIM para la simulacio´n de interrup- ciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.4. Excepcionessoftware . . . . . . . . . . . . . . . . . . . . . . 124 10.5. Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.6. Problemasdelcap´ıtulo . . . . . . . . . . . . . . . . . . . . . 141 Bibliograf´ıa 143 A Manualdeusodelcomandoxspim 145 B LlamadasalSistemaOperativo 149 B.1. Introduccio´n . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 B.2. Finalizacio´ndelprogramaencurso:exit . . . . . . . . . . . 150 ´Indicegeneral VII B.3. Impresio´ndeunentero:print int. . . . . . . . . . . . . . 151 B.4. Impresio´ndeunacadena:print string . . . . . . . . . . 152 B.5. Lecturadeunentero:read int . . . . . . . . . . . . . . . . 152 B.6. Lecturadeunacadena:read string . . . . . . . . . . . . 153 C RegistrosdelCoprocesador0 155 D CuadroresumendeljuegodeinstruccionesdelMIPS 157
Description: