0 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

در مراحل کامپایل و اجرای برنامه های .Net به به دو مفهوم Common Intermediate Language یا CIL و Microsoft intermediate language یا MSIL برخورد کردم، می خواستم بدونم این دو چه تفاوتی با یکدیگر دارند؟

1 پاسخ

+2 امتیاز
قبل توسط (868 امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

نمیدونم تا چه حد باید بحث رو باز کنم، از نظر خوانایی برای ما پایین ترین سطح کد هستش

.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 داده میشه تا به کد قابل فهم برای پردازنده تبدیل بشه

و در نهایتمم کد رو پردازنده مورد نظر (کد ماشین) اجرا میشه

قبل توسط (760 امتیاز)
من دو قسمت صحبت شما رو متوجه نشدم دوست من:
این که گفتید :
بعد به بایتکد تبدیل میشه
رو پردازنده مورد نظر (کد ماشین) اجرا میشه

سئوال:
1)  لطفا درباره بایتکد توضیح بدید
2)  این کد ماشین که فرمودید رو هم یه توضیحی بدید
قبل توسط (1.1هزار امتیاز)
می تونید برای مواردی که سوال جدید براتون ایجاد کرده سوال مرتبط جدید بپرسید.
قبل توسط (868 امتیاز)
+1
byteCode : بایتکد کدی بین زبان ماشین و همون CIL هستش ، چرا .نت اومده همچینکاری کرده و مستقیم به زبان ماشین تبدیل نکرده ؟ بایت کد به راحتی روی سیستم عامل های مختلف پورت میشه و همچنین میتونه بصورت مستقیم روی virtual machine اجرا بشه یا به زبان ماشین تبدیل بشه.کار تفسیرش برای مفسر راحت تر هستش.

کد ماشین هم منظور کد قابل پذیرش و اجرا برای پردازنده های مختلف هستش.
http://www.shabakeh-mag.com/Article.aspx?id=1003314 !!
http://www.kses.rzb.ir/post/231

سوالات مشابه

+1 امتیاز
1 پاسخ 2.6هزار بازدید
0 امتیاز
1 پاسخ 594 بازدید
0 امتیاز
1 پاسخ 450 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط سلطانی (1.1هزار امتیاز)
0 امتیاز
0 پاسخ 589 بازدید
0 امتیاز
1 پاسخ 579 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط SAMIRA (7.1هزار امتیاز)
0 امتیاز
1 پاسخ 1.1هزار بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط mp (7.0هزار امتیاز)
0 امتیاز
1 پاسخ 1.3هزار بازدید
0 امتیاز
2 پاسخ 3.1هزار بازدید
0 امتیاز
1 پاسخ 704 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط hldv (760 امتیاز)
...