Practica Compiladores
deaflow7 de Septiembre de 2011
703 Palabras (3 Páginas)686 Visitas
1. Explique brevemente qué es Common Language Infrastructure (CLI), Common Intermediate Language (CIL) y Virtual Execution System (VES). (ver documento Ecma-335.pdf)
CLI. Especificación estandarizada que describe un entorno virtual para la ejecución de aplicaciones. Su principal característica es permitir que aplicaciones escritas en distintos lenguajes de alto nivel puedan ejecutarse en múltiples plataformas tanto de hardware como de software sin necesidad de reescribir o compilar nuevamente su código fuente.
CIL. Lenguaje de programación legible por humanos de nivel más bajo en el CLI y en el .NET Framework. Estos últimos compilan a CIL, el cual a su vez es ensamblado en bytecode. CIL es un lenguaje ensamblador orientado a objetos que está basado en pilas y es ejecutado por una máquina virtual. Los lenguajes .NET principales son:
• C#
• Visual Basic .NET
• C++/CLI
• J#.
2. Describa las opciones que tiene el ensamblador ILASM para compilar un programa. Ejemplo /dll. (man ilasm)
output <nombre del archivo>: especifica la salida del archivo nombrado.
exe: genera un ejecutable
dll: genera una librería
scan_only: escanea solo el código IL y los tokens.
show_tokens: muestra los tokens.
show_metod_def: despliega la información del método cuando un método es definido.
show_metod_ref: despliega la información del método cuando un método es referenciado.
key:KEYFILE: la salida de ensamblador usando el par llave presenta la especificación del nombre del archivo llave (snk). si el par de llaves lleno es requerido (i.e. retrasa el signo confirmando con el uso de la directiva .publickey)
key:@CONTAINER: la salida del ensamblador usando el par de llaves presenta un contenido especificado.
--about: despliega la información acerca de ilasm.
--version: despliega la version de ilasm.
3. Describa para que sirven los comandos:
mcs Sirve para compilar código C#, este a su vez nos genera un código ejecutable.
monodis Convierte la salida de un código c# a un código il.
ilasm Desensambla un código generado a una imagen CI después de haber generado el ejecutable en C#(.exe).
monolinker Localiza las funciones que un programa puede requerir, la conexión analiza el código intermedio CIL producido en cada compilación sobre la plataforma mono.
monop Permite ver las líneas de salida de una clase, como ver el nombre de cada miembro de la clase.
gacutil Inicia parte del ensamblado que está disponible por todas las aplicaciones ejecutadas, permite desarrollar versiones ensambladas dentro del sistema GAC.
4. Haga un resumen del conjunto de instrucciones de CIL que se usan en esta práctica, una instrucción por una línea de comando.
Holamundo.il
ldstr "Hola mundo!" // Pone la cadena “Hola mundo” en el método WriteLine en la pila.
ret // Retorna al método WriteLine en este caso.
call void [mscorlib]System.Console::WriteLine(string) // Invoca al método WriteLine.
VariablesLocales.il
box int32 //box se utiliza para obtener el valor de la pila, construir un objeto con una copia del valor obtenido y colocar una referencia del objeto en la pila.
stloc segundo //stloc se utiliza para hacer un pop en la pila. Estará guardando en segundo el valor obtenido de la pila.
ldloc primero // Se usa para hacer un push en la pila. La variable primero contiene el valor que se colocará en la pila.
add //Obtiene dos valores de la pila y
...