Ir al contenido

Common Intermediate Language

De Wikipedia, la enciclopedia libre

Esta es una versión antigua de esta página, editada a las 06:03 14 may 2008 por 200.47.115.61 (discusión). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

Common Intermediate Language (CIL, pronunciado "sil" o "kil") (anteriormente llamado Microsoft Intermediate Language o MSIL) es el lenguaje de programación legible por humanos de más bajo nivel en el Common Language Infrastructure y en él .NET Framework. Los lenguajes del .NET Framework compilan a CIL, el cual a su vez es ensamblado en bytecode. CIL es un lenguaje ensamblador orientado a objetos, y está basado en pilas. Es ejecutado por una máquina virtual. Los lenguajes .NET principales son C#, Visual Basic .NET, C++/CLI, y J#.

CIL fue conocido originalmente como Microsoft Intermediate Language (MSIL) durante las versiones de prueba de los lenguajes .NET. Debido a la estandarización de C# y CLI, el bytecode es ahora conocido oficialmente como CIL. Debido a esto, CIL es frecuentemente llamado MSIL.

Información general

Durante la compilación de los lenguajes de programación .NET, el código fuente es convertido a código CIL en lugar de código objeto especifico del procesador o de la plataforma. CIL es un conjunto de instrucciones independientes de la plataforma y CPU que puede ser ejecutado en cualquier ambiente que soporte el .NET Framework. El código CIL es verificado durante el tiempo de ejecución, proporcionando mayor seguridad y confiabilidad que los binarios compilados nativamente.

Instrucciones bytecode

El codigo intermedio de CIL incluye un conjunto de instrucciones para las siguientes grupos de tareas:

Compilación en tiempo de ejecución

La compilación en tiempo de ejecución (JIT, just-in-time) involucra convertir el código intermedio en código inmediatamente ejecutable por la CPU. La conversión es realizada gradualmente durante la ejecución del programa. La compilación JIT proporciona optimización especifica para el ambiente, seguridad de tipos en tiempo de ejecución, y verificación de ensamblados. Para cumplir con esto, el compilador JIT examina los metadatos del ensamblado en busca de accesos ilegales y maneja las violaciones apropiadamente.

Generador de imágenes nativas

El generador de imágenes nativas (NGEN) produce una imagen binaria nativa para el entorno actual. El bytecode es omitido completamente o convertido en instrucciones nativas de CPU antes de la ejecución. Esto elimina la sobrecarga del JIT a costo de la portabilidad; cuando una imagen generada por NGEN es ejecutada en un entorno no compatible, el .NET framework automáticamente utilizara el compilador JIT.

Se pretende que NGEN haga la ejecución de ensamblados mas rápida al eliminar el proceso de compilación JIT en tiempo de ejecución, pero en algunos casos, esto tiene efectos adversos debido a la optimización hecha por el optimizador JIT. Por este hecho, se sugiere usar NGEN solo después de medir el rendimiento de la aplicación antes y después de usarlo.

Metadato

Los metadatos son información acerca de las clases compiladas. Al igual que los tipos de biblioteca en el Component Object Model, permite a las aplicaciones proporcionar y descubrir interfaces, clases, tipos, métodos y campos en el ensamblado. El proceso de lectura de metadatos es llamado reflexión.

Ejecución de CIL

  • El código fuente es convertido a Common Intermediate Language y un ensamblado .NET es creado.
  • Hasta la ejecución de un ensamblado .NET, su CIL es pasado a través del compilador JIT del Common Language Runtime para generar código nativo. (La compilación NGEN elimina este paso en tiempo de ejecución.)
  • El código nativo es ejecutado por el procesador de la computadora.

Enlaces externos