تالار گفتمان مانشت
bootstraping - نسخه‌ی قابل چاپ

bootstraping - لهمشد - ۰۵ آذر ۱۳۸۹ ۰۲:۳۴ ب.ظ

سلام:
من تازه با سایت مانشت اشنا شدم ممکنه یکی تو ضییح بده که bootstraping چیه بگذارید من بگم یه خورده بعد تشریح کنید:
"می گن اغلب مترجم یک زبان جدید به همان زبان نوشته میشود . بعنوان مثال کا مپایلر اولیه پاسکال به پاسکال نوشته شده است . یکی از مشکلات این عمل این است که کد کامپایلر نوشته شده چطور ترجمه شود ما که کا مپایلیری نداریم که این دستورات این کامپایلر رو که به زبان پاسکال نوشته شده روش کامپایل کنیم تا کا مپایلر پاسکال برامون تولید بشه اگه هم بخواهیم روی یک کامپایلیر دیگه دستورات این کا مپایلر رو کامپایل کنیم با جمله اول که گفته" اغلب مترجم یک زبان جدید به همان زبان نوشته میشود"
تناقض داره خوب چه باید کرد:
در جواب گفته شده راه حل ارائه شده به این‌تر تیب است که ما کا مپایلر را بصورت دستی به کد میانی پاسکال تبدیل کرده و پس از ان کد کا مپایلر را به عنوان ورودی به p-code مربوطه داده و کا مپایلر ایجاد میکنند چطور اخه با مثال اگه میشه تو ضییح بدید ؟؟

RE: bootstraping - 54m4n3h - 21 دى ۱۳۸۹ ۰۹:۴۴ ب.ظ

چیزی که من در مورد bootstrapping متوجه شدم این بوده:
علاوه بر مشکلی که شما توضیح دادید نوشتن کامپایلر به زبان اسمبلی بسیار مشکل هست در نتیجه از یک سلسله مراتب کامپایلر استفاده میکنیم.
اول از یک زیرمجموعه‌ی خیلی ساده از آن زبان شروع میکنیم و با صرف نظر از خیلی از امکانات با این زبان کوتاه شده یک کامپایلر می نویسیم مثلاً یک نوع حلقه‌ی تکرار داشته باشه یا اصلاً حلقه‌ی تکرار نداشته باشه و اینا با if و goto پیاده سازی بشه یا مثلاً رکورد و آرایه و اینا نداشته باشه یعنی سطح زبان رو پایین میاریم بعد با این زبان بسیار ساده که اسمش رو میذاریم micro یه زبان mini تعریف میکنیم که امکانات بیشتری داره، یعنی کامپایلر mini رو به زبان micro مینویسیم و همین روند رو ادامه میدیم تا به کامپایلری که میخوایم برسیم.
در ضمن برای micro هم با زبان ماشین یا اسمبلی کامپایلر می نویسم.