برنامه نویسی

MSIL – انجمن DEV

IL (زبان متوسط) یک زبان میانی در دات نت است که با نام های MSIL (زبان میانی مایکروسافت) یا CIL (زبان متوسط ​​مشترک) نیز شناخته می شود. کد منبع در زبان‌هایی مانند سی شارپ یا VB.NET عمدتاً به جای اینکه مستقیماً در کد ماشین باشد در IL کامپایل می‌شود و آن را مستقل از پلتفرم می‌کند.

استقلال معماری: کد IL می تواند روی هر پلتفرمی اجرا شود که نسخه مناسب CLR (زمان اجرای زبان مشترک) نصب شده باشد. این به توسعه دهندگان این امکان را می دهد که یک بار کد بنویسند و آن را روی سیستم عامل های مختلف و معماری پردازنده اجرا کنند.

گردآوری JIT: هنگامی که یک برنامه اجرا می شود، IL با استفاده از یک کامپایلر JIT (کامپایلر Just-In-Time) به کد ماشین تبدیل می شود. این فرآیند در زمان اجرا برای اطمینان از عملکرد بهینه بر روی پلت فرم هدف اتفاق می افتد.
Net da MSIL nima?

در طول توسعه برنامه، پلت فرم Net از کامپایلرهای جداگانه برای هر یک از زبان های برنامه نویسی مختلف (C#، F#، Visual Basic) استفاده می کند. پس از کامپایل شدن کدی که می نویسیم، هر کامپایلر دات نت کد ما را به کد میانی تبدیل می کند و هر محیطی برای این کار از MSIL استفاده می کند.

در این بخش بیشتر با MSIL آشنا خواهیم شد.

MSIL چیست؟
زبان میانی مایکروسافت (MSIL) گاهی اوقات زبان میانی رایج (CIL) نامیده می شود. توسط کامپایلرهای مختلف (C#، VB، .NET و غیره) تولید می شود و مفهومی کاملاً متفاوت از کامپایلرهای مخصوص زبان است.

برنامه ILDasm (Intermediate Language Disassembler) موجود در NET Framework SDK (FrameworkSDKBinildasm.exe) به کاربران امکان می دهد کد MSIL را در قالبی قابل خواندن توسط انسان مشاهده کنند. با این برنامه می توانیم کد MSIL را در هر فایل اجرایی دات نت (EXE یا DLL) مشاهده کنیم.

فرآیند اجرا در CLR (زمان اجرای زبان مشترک) است.
در فرآیند زیر، نحوه کار MSIL و نحوه تبدیل JIT MSIL را به کد ماشین نشان خواهیم داد.

• در طول کامپایل CLR، کامپایلر مخصوص زبان کد منبع را به MSIL تبدیل می کند. علاوه بر MSIL، ابرداده نیز در طول کامپایل تولید می شود. فراداده شامل عناصری مانند تعریف انواع در کد، نسخه اسمبلی، لیستی از مجموعه های خارجی مرتبط اضافی و همچنین اطلاعات زمان اجرا است.

• MSIL در مونتاژ CLI (زیرساخت زبان مشترک) کامپایل شده است. این اسمبلی یک کتابخانه کد است که برای امنیت، نسخه سازی، استقرار و اهداف دیگر ساخته شده است. این به دو نوع تقسیم می شود: مونتاژ فرآیند (EXE) و مونتاژ کتابخانه (LIB) (DLL).

• سپس کامپایلر JIT زبان میانی مایکروسافت (MSIL) را به کد ماشین مرتبط با محیط کامپیوتری که در آن اجرا می شود ترجمه می کند. کد MSIL ما بر اساس الزامات مختلف در کد ماشین کامپایل می شود، به این معنی که کامپایلر JIT فقط MSIL مورد نیاز خود را کامپایل می کند، نه کل MSIL را.

• سپس کامپایلر JIT کد ماشین را تولید می کند که روی پردازنده کامپیوتر اجرا می شود.

به طور کلی، روند زیر رخ می دهد:

توضیحات تصویر

نقش MSIL در Net

  1. استقلال پلتفرم: – استقلال پلتفرم به این معنی است که اسکریپت بایت کد یکسان را می توان بر روی هر پلتفرمی مستقر کرد. به عبارت دیگر، MSIL یک مجموعه دستورالعمل قابل حمل را تعریف می کند که مستقل از یک پردازنده خاص است.

  2. بهبود عملکرد: – کامپایلر JIT به جای اینکه کل برنامه را به یکباره بسازد، هر قطعه کد را در صورت نیاز کامپایل می کند. وقتی کد را یک بار کامپایل می کنیم، کامپایل تا زمانی که برنامه را ایجاد کنیم حفظ می شود، بنابراین نیازی به اجرای مجدد کد خود نداریم. این روش سریعتر از کامپایل کردن کل کد برنامه از ابتدا است. همچنین نشان می دهد که اجرای کد MSIL به همان سرعت اجرای کد بومی ماشین است.

  3. قابلیت همکاری زبان: قابلیت همکاری یک زبان قابلیت استفاده آن را افزایش می دهد. امکان کامپایل از یک زبان به MSIL وجود دارد و کد حاصل با کدهای زبان دیگر (کامپایل شده به MSIL) سازگار است. انتخاب زبان توسط توسعه دهندگان کنترل نمی شود. برای سهولت در توضیح، امکان استفاده از چندین زبان در یک برنامه وجود دارد. امیدوارم در تصویر زیر واضح تر باشد.

توضیحات تصویر

کاهش سردردهای نگهدارنده:- CLR کد MSIL را برای انطباق با امنیت بررسی می کند. این می تواند قطعات ناامن را در زمان ساخت تشخیص دهد، که تا حد زیادی سردرد تعمیر و نگهداری را کاهش می دهد.

**نتیجه گیری **در عوض می توان گفت که کد MSIL اساس هر اسمبلی دات نت است. هرچه بیشتر در مورد مجموعه دستورات MSIL بیاموزید، توسعه برنامه‌های .NET کامل را بهتر درک خواهید کرد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا