CC41C Introducción al Hardware Tarea Recuperativa - Primavera 2011 Profesor: Luis Mateu En esta tarea Ud. deberá extender el intérprete de threaded-code visto en la clase auxiliar con 2 nuevas instrucciones: ● CTOI: Recibe 2 argumentos en el tope de la pila. El tope es un puntero a un string s de caracteres en ASCII que representa un número en base b. El siguiente en la pila es la base b, entre 2 y 10. Esta operación reemplaza los 2 valores en el tope de la pila por el valor entero de s. ● CFROMI: Recibe 3 argumentos en el tope de la pila. El tope es un entero n. El siguiente es un entero b entre 2 y 10. El tercero después del tope de la pila es un puntero a string de caracteres. Esta operación convierte el entero n a base b, dejando el resultado en el string de carateres y desapilando los 3 argumentos recibidos en la pila. Para entender como funciona el intérprete lea atentamente el enunciado de la tarea 2 de 2006 y su solución incluida entre los archivos adjuntos en trec.tgz. Esta tarea se presentó en la clase auxiliar del Lunes 28 de Noviembre. Requerimientos Extraiga los archivos de trec.tgz. Ahí encontrará: ● conv-threaded.s.tmpl: copie este archivo a conv-threaded.s e implemente al final de este último las operaciones pedidas. No haga cambios en la parte que ya se encuentra implementada. El archivo convthreaded.s es lo que Ud. debe entregar como solución de su tarea. Estudie la sección codigo_conv para entender cómo reciben sus argumentos CTOI e CFROMI. ● test-conv-threaded.c: programa de prueba de su intérprete. ● Makefile: Sirve para compilar su intérprete, el programa de prueba y los distintos programas incluidos como ejemplos. ● Varios programas de ejemplo, como la solución de la tarea 2 del año 2006. Pruebe su programa utilizando test-conv-threaded.c. Este programa le dirá si su tarea funciona o no. Ejemplo: % make ... % ./test-conv-threaded ... Bravo! Su tarea funciona correctamente. % Indicaciones: ● No vacile en compilar con las opciones -S y -O para ver qué código genera GCC (-S genera el assembler y -O optimiza el código). El objetivo de esta tarea no es adiestrarlo en la programación en assembler x86, si no que Ud. sea capaz de entender y depurar programas en assembler x86. ● Use ddd para entender y depurar el intérprete. Seleccione el menú View -> Machine code window para ver el assembler. Coloque breakpoints en lugares estratégicos como en la instrucción CTOI con el siguiente comando: break CTOI. Lea la guía rápida para usar gdb en http://www.dcc.uchile.cl/~lmateu/CC41C. Entrega El plazo para de entrega vence impostergablemente el Viernes 6 de Abril. Envíeme vía e-mail su archivo convthreaded.s a lmateu@dcc.uchile.cl.