Intermediate Language





Intermediate Language

img/daneshnameh_up/8/8f/compics00080.jpg

IL ، یک زبان اسمبلی عمومی در مقایسه با زبان های اسمبلی نظیر 8080 و یا 6809 نیست . IL ، شامل مجموعه ای از دستورالعمل ها و یک بردار از ویژگی هائی است که بمنظور حمایت از عملیات ضروری و خصایص تعداد زیادی از برنامه های پیشرفته و شی گراء ، طراحی شده است . تاکید دات نت بر بودن بعنوان یک سیستم شی متداول در مقابل یک زبان برنامه نویسی خاص است .CLR ، مستقیما" ویژگی های زیادی را که عموما" بعنوان خصایص مربوط به زبان های برنامه نویسی مطرح می گردد، حمایت می نماید . این موضوع شامل یک سیستم نوع زبان های طبیعی برای حمایت از کلاس ها ، توارث ، نسبت دهی پویا ، مدیریت حافظه ، جمع آوری زائده های حافظه ، بررسی و برخورد با موارد غیر قابل پیش بینی و سایر موارد مرتبط است . مثلا" یک جمع کننده اطلاعات زائد حافظه ، مسئولیت حذف اشیاء غیر استفاده شده را از heap و بازیافت حافظه را بر عهده داشته و مهم نیست که کدها با چه زبانی نوشته شده اند .ارائه پتانسیل های فوق در CLR، یک پل ارتباطی معقول بمنظور تسهیل در ارتباط و یکپارچگی بین زبانها و عناصر را بدنبال خواهد داشت .از یک کمپایلر اختصاصی هر زبان، بمنظور ترجمه کدهای نوشته شده به IL ، استفاده می گردد.خروجی فرآیند ترجمه ، شامل IL و متا دیتا است .IL ، را می توان بمنزله یک زبان اسمبلی برای یک پردازنده مجازی stack-based دات نت تصور نمود . از این زاویه ، عملکرد IL ، مشابه کدهای P تولیده شده در نسخه های اولیه ویژوال بیسیک و یا بایت کدهای منتشر شده توسط یک کمپایلر جاوا ، است . ( IL ، قبل از اجراء بطور کامل ترجمه خواهد شد) . IL ، برای یک زبان خاص طراحی نشده است . عبارات IL ، نوع های متداول به اشتراک گذاشته شده را که توسط تمامی زبانهای دات نت ،استفاده می گردد ، پردازش می نمایند . سیستم نوع فوق ، CTS ) Common Type System) ، نامیده می شود. یک نوع دات نت، چیزی بمراتب بیشتر از یک نوع داده است . نوع های دات نت ، عموما" توسط کلاس هائی شامل کد و اعضاء داده تعریف می گردند. در زمان اجراء ، CLR)Common Language Runtime) ، مسئولیت استقرار یک برنامه دات نت در حافظه و اجرای آن را برعهده خواهد داشت .بمنظور نیل به هدف فوق ، CLR از تکنیکی با نام JIT) Just-In-Time) بمنظور ترجمه IL به کد مختص و وابسته به یک ماشین استفاده می نماید . کد دات نت ،همواره ترجمه و هرگز تفسیر نمی گردد ، بنابراین دات نت از یک ماشین مجازی بمنظور اجراء برنامه استفاده نکرده و در مقابل کد IL برای هر متد براساس کمپایلر JIT در اولین فراخوانی ترجمه خواهد شد. در مرتبه بعد که یک متد صدا زده می شود ، کد ترجمه شده توسط JIT ، اجراء خواهد شد .ماحصل فرآیند ترجمه ، تولید یک فایل اجرائی ویندوز با فرمت PE)Portable Executable) ، است .در رابطه با فایل فوق ، ذکر دونکته ضروری است : اول اینکه ، CLR از زبان استفاده شده برای تولید برنامه و یا عنصر مورد نظر آگاهی نداشته و صرفا" به کدهای IL توجه خواهد داشت .ثانیا" ، در تئوری استفاده ازکمپایلر JIT تمام عملیات مورد نیاز بمنظور استفاده از پتانسیل های دات نت است .


دات نت و کد مدیریت یافته

img/daneshnameh_up/7/7d/IL1.jpg

نحوه اجراء برنامه های دات نت تابع مدلی است که در شکل فوق ، نشان داده شده است . کد تولید شده که مقصد آن CLR فریمورک دات نت باشد را برنامه های مدیریت یافته ( managed applications ) می گویند. در مقابل،برنامه های ویندوز غیر از دات نت با نام برنامه های غیرمدیریت یافته ( unmanaged applications ) از آنان یاد می گردد. مایکروسافت بر این مسئله تاکید نموده است که در حال حاضر و طی سالیان آتی نیاز به این نوع برنامه ها وجود داشته( برنامه های غیرمدیریت یافته ) و تمهیدات لازم در خصوص ارتباط بین آنها اندیشیده شده است. متداولترین نیاز در این رابطه، همزیستی برنامه های دات نت در کنار عناصر COM است . بدین منظورمایکروسافت ، امکان فعالیت و کار برنامه های دات نت را با عناصر غیرمدیریت یافته COM ، فراهم نموده است . در این راستا می توان یک عنصر دات نت را بعنوان یک شی COM ریجستر کرد. در رویکردی مشابه ، دات نت امکان دستیابی به Win32 API برای برنامه های دات نت را فراهم تا از این طریق و در صورت تمایل و ضرورت ، عناصر مدیریت یافته قادر به فراخوانی توابع غیر مدیریت یافته موجود در یک DLL)Dynamic Link Library) ، باشند .


پیوندهای خارجی


همچنین ببینید



تعداد بازدید ها: 14199