vtortola.NET Logo
Modelo de ejecucion del .NET Framework. El MSIL.

Modelo de ejecucion del .NET Framework. El MSIL.

por vtortola domingo, 26 de agosto de 2007

Voy a intentar explicar de forma breve en varios artículos como funciona el .NET Framework y que papel juegan sus diferentes partes. En esta primera parte a modo de introducción explicaré la diferencia entre el código fuente y el código administrado generado por el compilador, dejando el CLR y el JIT para una segunda parte.

  • El código fuente.

Nuestro código C# (ó cualquier otro lenguaje con el que desarrollemos en .NET... por exótico que sea), es un leguaje de alto nivel con el componemos la lógica que queremos programar.

Aquí se puede ver una extensa lista de los lenguajes con los que se puede programar en .NET.

  • El compilador.

En lenguajes convencionales no administrados, el compilador es el encargado de generar código binario final a partir del código fuente, dicho código binario también se denomina código nativo, y es el que el procesador de nuestro ordenador puede interpretar.

Este código se genera para una determinada arquitectura, como pueden ser x86, x64 ó IA64 y en determinados casos para un determinado tipo de procesador. El hecho de compilarlo para una determinada arquitectura ó procesador como objetivo, permite optimizar el código al máximo aprovechando las optimizaciones y/ó juegos de instruciones específicos de ese objetivo. El problema, es que solo existe compatibilidad hacia atrás y no en todos los casos, por lo que lo que se compile para x64 no funcionará en x86 y si por ejemplo compilasemos explícitamente para Intel PIV, ejecutarlo en un Intel PIII podría causar problemas inésperados y difíciles de seguir al intentar por ejemplo, ejecutar instrucciones que no existen en el juego de instrucciones de Intel PIII.

474px-Ensamble_NET

En los lenguajes administrados, el compilador de nuestro IDE genera un código intermedio, a mitad de camino entre el lenguaje ensamblador y el lenguaje de alto nivel (más próximo al segundo que al primero) que se usará a posteriori para generar el código nativo que entiende nuestro procesador. En .NET este código es denominado código administrado, CIL (Common Intermediate Language) ó MSIL (Microsoft Intermediate Language).  El compilador genera lo que se demomina ensamblado ó ensamble, donde además de nuestro código administrado se añade un manifiesto que es una descripción el esamblado, los recursos que hemos decidido incluir dentro del ensamblado y los metadatos, que son datos que describen los tipos, métodos y campos que lo componen.

Podemos ver el código administrado de un ensamblado mediante la herramienta Ildasm.exe.

Entre las principales ventajas de este método destacan ser independiente del lenguaje elegido y de la plataforma, de forma que cualquier lenguaje de .NET genera el mismo código administrado y este es independiente de la arquitectura donde se ejecute, a no ser que se indique explícitamente. En ocasiones, el ensamblado puede requerir de código nativo que sea dependiente de la plataforma, en las que podemos indicar que generamos en ensamblado para una determinada arquitectura, de forma que el .NET Framework nos avise de ello si intentamos ejecutarlo en otra distinta, pero esto no genera ninguna optimización especial del código administrado, simplemente es una restricción.

Este código es convertido a código nativo en tiempo de ejecución por medio del JIT, del que hablaré próximamente.

Actualmente calificado 3.9 por 7 persona(s)

  • Currently 3,857143/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , ,

.NET 2.0

Related posts

Comentarios

agosto 26. 2007 23:09

trackback

Trackback from vtortola

Modelo de ejecucion del .NET Framework. Parte 1.

vtortola

agosto 27. 2007 06:17

Gravatar

Tú que pasa? que no tienes vacaciones o qué?
href="http://buscon.rae.es/draeI/SrvltGUIBusUsual?LEMA=vacaci%c3%b3n&TIPO_HTML=2&FORMATO=ampliado

Al margen, muy buena la entrada, como siempre

Salu2

Cristhian py

agosto 27. 2007 12:39

Gravatar

jajaja ya te digo tio, pasando el rato ;D

Gracias!

vtortola es

Comments are closed

Powered by BlogEngine.NET 1.1.1.8
This theme is a variation of Mads Kristensen by Valeriano Tórtola

Valeriano Tórtola

Personal Ver perfil
E-mail Enviar correo
LinkedIn LinkedIn
Fotos Fotos
MCPD

Publicidad

Posts recientes

Disclaimer

Las opiniones mostradas aqui son mis opniones y no representan el punto de vista de mi empresa en ninguna forma.

Creative Commons License

Esta obra está bajo una licencia de Creative Commons

Locations of visitors to this page

© Copyright 2010

Sign in

Calendario

<<  julio 2010  >>
lumamijuvido
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

Ver en calendario extendido