نمیدونم تا چه حد باید بحث رو باز کنم، از نظر خوانایی برای ما پایین ترین سطح کد هستش
.class public Foo
{
.method public static int32 Add(int32, int32) cil managed
{
.maxstack 2
ldarg.0 // load the first argument;
ldarg.1 // load the second argument;
add // add them;
ret // return the result;
}
}
، ولی به زبان ساده CIL ، همونطور که از اسمش پیداست ، یعنی زبانه میانی مشترک ، که این یعنی اینکه وقتی برنامه ی شما که مثلا با زبان C# نوشته شده ، برنامه من به زبان vb و برنامه دوستمون به زبان F# نوشته شده ، وقتی کامپایل میشن ، همگی به زبان میانی ترجمه میشن اول ، و این برای اینه که کد ها قابلیت جابجایی و انعطاف پذیریشون بیشتر بشه ، و برای هر کدوم نیاز به یه کامپالیر جداگانه نباشه.
و اینم بگم که هیچ فرقی با MSIL نداره ، در نسخه های اولیه و بتای .نت ، اسمش MSIL بود که وقتی این زبان تکمیل و رفت برای استاندارد سازی ، به CIL تغییر نام داد.
به ترتیب وقتی یه کد میخواد اجرا بشه :
اول به CIL تبدیل میشه ،
بعد به بایتکد تبدیل میشه
بعدش به JIT داده میشه تا به کد قابل فهم برای پردازنده تبدیل بشه
و در نهایتمم کد رو پردازنده مورد نظر (کد ماشین) اجرا میشه