Documente Academic
Documente Profesional
Documente Cultură
1
Alumno(s):
Enunciado
Introduccin al ensamblador - MIPS
Nota:
Grupo: ___________
___________________________________________________ ___________________________________________________
I. Objetivos
Conocer la arquitectura de las instrucciones de procesadores MIPS e instruirse en el uso del simulador PCSPIM. Ejecutar un programa simple que muestre la cadena hello word en la consola (pantalla) del simulador Observar el funcionamiento de las instrucciones bsicas del ensamblador MIPS para introducir al alumno en el manejo de programas ms complejos.
Nota.- Todos los alumnos antes de venir a laboratorio debern leer y estudiar las clases 06, Instrucciones MIPS, pudiendo usar como libro gua Arquitectura de Computadoras: de los microprocesadores a las supercomputadoras de Behrooz Parhami, Editorial McGraw Hill, ISBN-13: 978-970-10-6146-6 o ISBN-10: 970-10-6146-2
IV. Actividades
4.1 PCSPIM
SPIM es un simulador de lenguaje ensamblador que obtiene su nombre de invertir el trmino MIPS R2000/R3000. Este simulador tambin acepta las instrucciones MiniMIPS que son las usadas en el curso. Existen versiones para varios sistemas operativos con descarga gratuita: PCSPIM para sistema operativo Windows XSPIM para Macintosh con OS X SPIM para sistemas Unix o Linux
Los instaladores se pueden descargar desde: http://www.cs.wisc.edu/~larus/spim.html http://spimsimulator.sourceforge.net/ Instalar PCSPIM.ZIP si no se encuentra instalado en el computador, luego active el simulador. Es posible que ocurra la siguiente ventana:
A continuacin aparecer la pantalla de inicio del simulador PCSPIM. 4.2 Partes del PCSPIM Cuando se activa el simulador el programa muestra dos ventanas. Una llamada Console (consola) que sirve para mostrar en pantalla los mensajes de salida que son producidos por los programas que corre el simulador. La otra ventana, llamada PCSPIM, contiene el simulador en s. La siguiente figura muestra las partes del simulador:
En la ventana PCSPIM aparecen cuatro tabs o regiones. La parte superior presenta el contenido del archivo de registros del MiniMIPS. La siguiente seccin est destinada a mostrar el segmento de texto del programa (en este momento en blanco) que son las instrucciones del programa. En el segmento de texto del programa cada una de las lneas sigue un formato: [direccin de memoria en hex] contenido de la instruccin hexa opcode y parmetros El siguiente tab presenta el segmento de datos y la pila del programa. Cada lnea, al igual que en el caso del segmento de texto, se compone de una direccin expresada en notacin hexadecimal y de cuatro palabras (o 16 bytes). El ltimo tab presenta una zona destinada a presentar los mensajes producidos por PCSPIM. Por defecto muestra los crditos del programa. El simulador, al igual que cualquier otro programa, posee una barra de mens que presenta las siguientes opciones: File Open, abre un archivo con cdigo ensamblador, lo carga y lo ensambla. Save Log, graba un archivo que contiene informacin sobre el estado (status) del simulador. Exit, termina el PCSpim.
Simulator Clear Registers, limpia o coloca todos los registros a cero (0x00000000). Reinitialize, coloca los registros y memoria a cero y reinicia el motor de simulacin. Reload , reinicia el simulador y vuelve a cargar el archivo actual. Go, corre o ejecuta el programa actual.
Break/Continue, si el programa est corriendo, coloca pausa. Si el programa est en pausa entonces continua su ejecucin. Single Step, ejecuta una sola instruccin. Multiple Step, ejecuta un nmero de pasos definidos por el usuario. Breakpoints..., muestra una caja de dialogo con los puntos de quiebre del programa (breakpoint). Set Value..., Muestra una caja de dialogo para colocar valores. Display symbol table, muestra la tabla de smbolos del simulador en una ventana. Settings..., muestra una caja de dialogo con la configuracin del simulador.
Windows Help Help Topics, ofrece un ndice con las opciones de ayuda en lnea. About, muestra la versin del simulador. Tile, coloca las ventanas de tal forma que no se superpongan. 1 Messages, muestra la ventana de mensajes. 2 Text Segment, muestra la ventana del segmento de texto. 3 Data Segment, muestra la ventana del segmento de datos. 4 Registers, Muestra la ventana de registros. 5 Console, muestra la ventana de la consola. Clear Console, elimina todo el texto de la ventana de consola. Toolbar, oculta o muestra la barra de herramientas. Statusbar, oculta o muestra la barra de estado.
4.3 Primer programa Vamos a hacer un ejecutar un programa bsico dentro de PCSPIM. El programa es el clsico programa hello world (hola mundo). Para realizar este programa en un lenguaje de alto nivel como JAVA o C tendramos que almacenar la cadena hola mundo en una variable y a continuacin llamar a una funcin de impresin de cadena (como printf). Un enfoque similar se sigue en el programa que hace uso de las instrucciones del MiniMIPS. En este caso las operaciones de entrada/salida hacen que PCSPIM abra la ventana de consola e imprima all los mensajes o lea valores desde el teclado (si la instruccin fuera de lectura de datos). Por tanto cualquier salida del programa aparece en la consola lo mismo que las entradas por teclado se leen desde la consola. El modo de entrada y salida en PCSPIM se realiza mediante una llamada al sistema o syscall. Una llamada al sistema es cono una llamada a procedimiento y necesita que se pase un argumento entero en el registro $v0 que est en el rango [1,10]. La siguiente tabla contiene las funciones asociadas con estas 10 posibilidades: Clase ($v0) Funcin Argumento Resultado ===================================================================================== Salida 1 Imprimir entero Entero en $a0 Despliega entero 2 Imprimir punto flotante Flotante en $f12 Despliega flotante 3 Imprimir doble flotante Doble flotante en $f12,$f13 Despliega doble flotante 4 Imprimir cadena Apuntador en $a0 Despliega cadena terminado en nulo Entrada 5 Leer entero Regresa entero en $v0 6 Leer punto flotante Regresa flotante en $f0 7 Leer doble flotante Regresa flotante en $f0, $f1 8 Leer cadena Apuntador en $a0, longitud Regresa cadena en el buffer del apuntador 9 Alojar memoria Numero de bytes en $a0 Apuntador a bloque de Memoria en $v0 Control 10 Salir del programa Termina programa
Para generar el programa hola mundo abra el bloc de notas de Windows y copie el siguiente texto en l:
## ## hello.a - prints out "hello world" ## ## a0 - points to the string ################################################# # # # text segment # # # ################################################# .text .globl __start __start: # execution starts here la $a0,str # put string address into a0 li $v0,4 # system call to print syscall # out a string li $v0,10 syscall
# au revoir...
str:
Ahora guarde el archivo bajo el nombre hello.asm en el directorio; C:\Archivos de programa\PCSPIM. Antes de efectuar la carga debemos mencionar que es importante que incluir al final del archivo un par de lneas en blanco, caso contrario saldr un error al momento de la carga. Note en el cdigo tambin la presencia de unas directivas de compilacin que le indican a PCSPIM cules son los segmentos que conforman el programa, esto es texto y data. Para efectuar la carga primero vaya al men Simulador elija Reinitialize. Vera como la ventana correspondiente al segmento de texto del programa aparece ahora en blanco. A continuacin vaya al men File y elija open, busque el archivo hello.asm. Si todo sale bien vera que en la ventana del segmento de texto tiene el programa y este est a partir de la posicin 0x00400000. Note que el cdigo que est en el PCSPIM no es igual que el cdigo que est en el archivo hello.asm. Eso se debe al uso de pseudo instrucciones (que se vern en clase). Para correr el programa se puede usar la opcin Go del men Simulator. Observe como es que el programa muestra en la pantalla el mensaje Hello world Vuelva a reinicializar el simulador, cargue nuevamente el programa y ahora elija la opcin Step del men Simulator. Continu hasta que el programa termine.
El simulador tiene otras opciones que permiten la ejecucin con puntos de quiebre y se puede apreciar como la ejecucin de cada instruccin modifica el contenido de los registros de acuerdo a la lgica del programa
V. Tarea en laboratorio
Ejercicio 5.1 Establezca una relacin entre la figura siguiente y lo que ha visto en el simulador.
Hex address
00000000 00400000
Reserved
Program
10000000 10008000 1000ffff
Stack
7ffffffc
Stack segment
Ejercicio 5.2 Recuerde la definicin de Pseudo instruccin (clase 08) y explique porque el cdigo que se presenta en el archivo .asm es diferente del segmento de cdigo que muestra el PCSPIM. Las respuestas deben estar en un papel que ser entregado al final de la sesin prctica al jefe de prcticas.
# au revoir...
################################################# # # # data segment # # # ################################################# .data str: .asciiz "hello world" ans: .asciiz "Length is " endl: .asciiz "\n" ## ## end of file length.a
Ejercicio 5.2
Simule el programa haciendo uso de las opciones que se encuentran en Simulator. Experimente cmo funciona el programa. Fjese en la ventana de datos para observar cmo se van modificando los valores del archivo de registros hasta encontrar la respuesta deseada. Ejercicio 5.3 Con ayuda del help, las clases 06 a 08 e informacin que encuentre en Internet, estudiar cada una de las instrucciones y directivas de compilacin que aparecen en el programa. Haga un resumen de no ms de una pgina indicando sus observaciones, puede incluir tambin un diagrama de flujo. Las tres preguntas deben responderse y presentarse en un informe en la siguiente clase/sesin prctica.