CC41C Introducción al Hardware Tarea Recuperativa

Anuncio
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.
Descargar