Iniciando la segunda fase de Micro-C...
Hola que tal amigos, un placer estar nuevamente con ustedes, para comenzar la segunda fase de nuestro proyecto de Compiladores. En esta ocasión les mostraremos los resultados obtenidos en la realización del primer trabajo de laboratorio asignado en esta nueva clase de Compiladores II.
La primera actividad que se nos encomendó fue ejecutar paso a paso el programa suma.s en el software SPIM, el cuál es un simulador de una maquina MIPS. Para realizar este trabajo lo hicimos de la siguiente manera:
Primero cargamos el archivo suma.s, luego utilizando la tecla F10 o la opción Simulator - Single Step ejecutamos paso a paso el programa suma.s. En el transcurso de la ejecución del mismo observamos como iban cambiando los valores en cada uno de los registros.
Además, esta primera tarea fue muy productiva porque nos ayudo a comprender la forma de realizar llamadas al sistema. Las cuales se hacen con la ayuda del registro $v0, en el cual se almacena el numero que representa el tipo de llamada que se quiere realizar.
Entre las llamadas al sistema que realiza suma.s están, la solicitud de entrada desde el teclado, de los dos números a sumar. Y posteriormente la salida hacia la pantalla del resultado correspondiente.

De acuerdo, a la segunda actividad a realizar, la cual consiste en ejecutar la instrucción addi $v0, $zero, 4, dicha instrucción realiza una suma inmediata de 4 + 0, y el resultado lo almacena en el registro $v0. Dicho resultado se puede apreciar en la figura de arriba, en la segunda fila del primer componente de la ventana de PCSpim. Además, podemos ver la ubicación del apuntador del programa, el cual esta localizado en la quinta fila del segundo componente de la ventana de PCSpim.
La tercera actividad consistió en imprimir el producto de los dos números que ingreso el usuario, esto lo realizamos utilizando las siguientes líneas de código:
#Se escribe el mensaje de string para mostrar el producto entre los dos números
addi $v0, $zero, 4
la $a0, cad3
syscall
mul $s2, $s0, $s1 #Se multiplican ambos números
#Se escribe el resultado
addi $v0, $zero, 1
add $a0, $zero, $s2
syscall
En la primera instrucción almacenamos en $v0 el valor 4, para indicar a SPIM que vamos visualizar una cadena string en pantalla, la cadena se encuentra en cad3; con esto mostramos el mensaje "El producto de ambos es: "
A continuación, multiplicamos el contenido de $s0 y $s1, el resultado lo almacenamos en $s2. Y para finalizar mostramos $s2 en pantalla, el resultado lo vemos a continuación:

Respecto a la cuarta y última actividad asignada en esta práctica de laboratorio, ésta la hicimos con la ayuda del documento que se encuentra en la siguiente dirección en la Internet:
http://www.caip.rutgers.edu/%7Eemmalily/teaching_files/examples.html
En donde encontramos ejemplos de cómo realizar comparaciones entre variables(registros). Las ordenes importantes para realizar las comparaciones fueron beq y blt; la primera compara el contenido en dos registros y nos dice si dicho contenido es igual, en caso de serlo entonces se realiza un branch a una etiqueta que se especifica en la instrucción, mientras tanto blt realiza la misma labor que la primera orden solo con la excepción que la comparación no se basa en si son iguales o no, sino en qué si uno es mayor que el otro.
El código utilizado para realizar ésta actividad lo colocamos a continuación:
beq $s0, $s1, equals
blt $s0, $s1, s1Mayor
blt $s1, $s0, s0Mayor
s1Mayor:
#Se escribe el mensaje de string para mostrar el número mayor
addi $v0, $zero, 4
la $a0, cad5
syscall
#Se escribe el número mayor
addi $v0, $zero, 1
add $a0, $zero, $s1
syscall
b equals #saltar a etiqueta equals
s0Mayor:
#Se escribe el mensaje de string para mostrar el número mayor
addi $v0, $zero, 4
la $a0, cad5
syscall
addi $v0, $zero, 1
add $a0, $zero, $s0
syscall
equals:
#Se escribe un return al final
addi $v0, $zero, 4
la $a0, cr
syscall
#Fin del programa
addi $v0, $zero, 10
syscall
Además colocamos una corrida en la consola de PCSpim:

La experiencia vivida al realizar este laboratorio fue de mucho provecho, porque se aprendió a realizar algunas de las operaciones más básicas en el simulador SPIM, como sumas, multiplicaciones, comparaciones, visualización de mensajes, entre otras. Con la lectura que realizamos al documento Appendix A.pdf, conocimos la mayoría de los comandos de este simulador, y aunque hemos quedado con algunas dudas, tenemos la confianza que las despejaremos, si no todas, una gran mayoría, en el transcurso de la semana.
Las dificultades encontradas no fueron tantas, gracias a Dios todas las cosas salieron bien, por ahí, no entendíamos inicialmente las llamadas al sistema(syscall) pero poco a poco fuimos comprendiendo su funcionamiento al analizar detenidamente la ejecución del programa en el simulador PCSpim.
Igualmente, al inicio de la práctica no entendíamos la forma de realizar la ejecución paso a paso de nuestro programa, pero después de varias pruebas, a Dios gracias llego a buen término el asunto.
Bueno señores, y con esta me despido. Sin duda, que el laboratorio fue de mucho provecho, como recién dije al principio, y definitivamente, hemos quedado listos para comenzar esta segunda etapa de nuestro proyecto: el compilador micro-C.
La primera actividad que se nos encomendó fue ejecutar paso a paso el programa suma.s en el software SPIM, el cuál es un simulador de una maquina MIPS. Para realizar este trabajo lo hicimos de la siguiente manera:
Primero cargamos el archivo suma.s, luego utilizando la tecla F10 o la opción Simulator - Single Step ejecutamos paso a paso el programa suma.s. En el transcurso de la ejecución del mismo observamos como iban cambiando los valores en cada uno de los registros.
Además, esta primera tarea fue muy productiva porque nos ayudo a comprender la forma de realizar llamadas al sistema. Las cuales se hacen con la ayuda del registro $v0, en el cual se almacena el numero que representa el tipo de llamada que se quiere realizar.
Entre las llamadas al sistema que realiza suma.s están, la solicitud de entrada desde el teclado, de los dos números a sumar. Y posteriormente la salida hacia la pantalla del resultado correspondiente.

De acuerdo, a la segunda actividad a realizar, la cual consiste en ejecutar la instrucción addi $v0, $zero, 4, dicha instrucción realiza una suma inmediata de 4 + 0, y el resultado lo almacena en el registro $v0. Dicho resultado se puede apreciar en la figura de arriba, en la segunda fila del primer componente de la ventana de PCSpim. Además, podemos ver la ubicación del apuntador del programa, el cual esta localizado en la quinta fila del segundo componente de la ventana de PCSpim.
La tercera actividad consistió en imprimir el producto de los dos números que ingreso el usuario, esto lo realizamos utilizando las siguientes líneas de código:
#Se escribe el mensaje de string para mostrar el producto entre los dos números
addi $v0, $zero, 4
la $a0, cad3
syscall
mul $s2, $s0, $s1 #Se multiplican ambos números
#Se escribe el resultado
addi $v0, $zero, 1
add $a0, $zero, $s2
syscall
En la primera instrucción almacenamos en $v0 el valor 4, para indicar a SPIM que vamos visualizar una cadena string en pantalla, la cadena se encuentra en cad3; con esto mostramos el mensaje "El producto de ambos es: "
A continuación, multiplicamos el contenido de $s0 y $s1, el resultado lo almacenamos en $s2. Y para finalizar mostramos $s2 en pantalla, el resultado lo vemos a continuación:

Respecto a la cuarta y última actividad asignada en esta práctica de laboratorio, ésta la hicimos con la ayuda del documento que se encuentra en la siguiente dirección en la Internet:
http://www.caip.rutgers.edu/%7Eemmalily/teaching_files/examples.html
En donde encontramos ejemplos de cómo realizar comparaciones entre variables(registros). Las ordenes importantes para realizar las comparaciones fueron beq y blt; la primera compara el contenido en dos registros y nos dice si dicho contenido es igual, en caso de serlo entonces se realiza un branch a una etiqueta que se especifica en la instrucción, mientras tanto blt realiza la misma labor que la primera orden solo con la excepción que la comparación no se basa en si son iguales o no, sino en qué si uno es mayor que el otro.
El código utilizado para realizar ésta actividad lo colocamos a continuación:
beq $s0, $s1, equals
blt $s0, $s1, s1Mayor
blt $s1, $s0, s0Mayor
s1Mayor:
#Se escribe el mensaje de string para mostrar el número mayor
addi $v0, $zero, 4
la $a0, cad5
syscall
#Se escribe el número mayor
addi $v0, $zero, 1
add $a0, $zero, $s1
syscall
b equals #saltar a etiqueta equals
s0Mayor:
#Se escribe el mensaje de string para mostrar el número mayor
addi $v0, $zero, 4
la $a0, cad5
syscall
addi $v0, $zero, 1
add $a0, $zero, $s0
syscall
equals:
#Se escribe un return al final
addi $v0, $zero, 4
la $a0, cr
syscall
#Fin del programa
addi $v0, $zero, 10
syscall
Además colocamos una corrida en la consola de PCSpim:

La experiencia vivida al realizar este laboratorio fue de mucho provecho, porque se aprendió a realizar algunas de las operaciones más básicas en el simulador SPIM, como sumas, multiplicaciones, comparaciones, visualización de mensajes, entre otras. Con la lectura que realizamos al documento Appendix A.pdf, conocimos la mayoría de los comandos de este simulador, y aunque hemos quedado con algunas dudas, tenemos la confianza que las despejaremos, si no todas, una gran mayoría, en el transcurso de la semana.
Las dificultades encontradas no fueron tantas, gracias a Dios todas las cosas salieron bien, por ahí, no entendíamos inicialmente las llamadas al sistema(syscall) pero poco a poco fuimos comprendiendo su funcionamiento al analizar detenidamente la ejecución del programa en el simulador PCSpim.
Igualmente, al inicio de la práctica no entendíamos la forma de realizar la ejecución paso a paso de nuestro programa, pero después de varias pruebas, a Dios gracias llego a buen término el asunto.
Bueno señores, y con esta me despido. Sin duda, que el laboratorio fue de mucho provecho, como recién dije al principio, y definitivamente, hemos quedado listos para comenzar esta segunda etapa de nuestro proyecto: el compilador micro-C.

0 Comments:
Post a Comment
<< Home