Table Of ContentPra´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:lación entre la programación en un lenguaje de alto nivel y el funcionamiento del procesador y .. tos en lenguaje ensamblador para computadores basados en los procesadores. MIPS32. Puede labras (words), asociado a la etiqueta vector, que comience en la dirección. 0x1000 0000 y que tenga