منو
 صفحه های تصادفی
دیواره سلول گیاهی
شورش زنج
عرضه
محمود بن ملکشاه سلجوقی
بیماریزایی ویروسی
علم کیمیا در کودکی
دعوت جبرئیل برای بیعت با امام حسین علیه السلام
بی‌خوابی‌
اسپهبد لفور
تیره حشره خواران
 کاربر Online
987 کاربر online
تاریخچه ی: کامپایلر

تفاوت با نگارش: 9

Lines: 1-29Lines: 1-62
-!رح متری ر کامپایلر +||V{maketoc}||
^@#16:
!کمپیلر
!
تریچه کامپایلر
-به طور کلی , کامپایلر برنامه‌ای است که متن برنامه‌ای را که به یک زبان برنامه‌سازی نوشته شده است ,به عنوان ورودی می‌پذیرد , و خروجی آن , متن برنامه‌ای به یک زبان دیگر است , به طوری که طوری که معنای آن متن تغییر نمی‌کند. این فرآیند , در زبان طبیعی , ترجمه نام دارد. ((مترجم))ها جملات یک زبان طبیعی را به زبان طبیعی دیگر ترجمه می‌کنند. تقریبا تمام کامپایلرها ,برنامه‌ای به یک زبان منبع را گرفته به برنامه‌ای به زبان مقصد تبدیل می‌کنند . به عنوان مثال , زبان منبع می‌تواند((c)) و زبان مقصد می‌تواند ماشین برای کامپیوتر ((پنتیوم)) باشد. زبانی که خود امپایلر با آ نوشته می‌شود, زبان پیاده ساز نام دارد.
علت انجام ترجمه این است
که , ((سخت افزار)) عملیاتی را انجام می‌دهد که توسط معنای برنامه توصیف می‌شود . به طور کلی , سخت افزار تنها منبع واقعی انجام محاسبات است. اجرای برنامه ترجمه شده, شامل خواندن داده‌های آن بار فرمت خاص , و چاپ نتایج با فرمت دیگری است . داده‌های ورودی می‌تواند از منابع متعددی خوانده شود , مثل ((فایل))ها , ((صفحه کلید)) و ((پکیج))‌های ((شبکه‌))به همین ترتیب , خروجی نیز می‌تواند در فایلها , ((صفحه نمایش)) , و چاپگر قرار گیرد .
برای ترجمه برنامه,از کامپایلر ا
ستفاده می‌کنیم . کامپایلر برنامه‌ای است که ورودی آ، , فایلی با فرمت متن برنامه و خرجی آن، فایلی با فرمت کد اجاریی است .
برای ت
هیه یک کامپایلر , کامپایلر دیگری رااجرا می‌کنیم که ورودی آن ,متن منبع این کامپایلر و خروجی آن , کد اجرایی برای این کامپایلر است . این فرآین کامپایل است . ار زبان منبع , همان زبان پیاده ساز باشد, و متن منبعی که کامپایل می‌شود, نسخه جدید خود کامپایلر باشد, این فرآیند خودرانی نام دارد.
کامپایل کردن یک برنامه‌, با تبدیل فرمت یک فایل به فرمت دیگر , مثل ((EBCDIC)) به ((اسکی ))تفاوت عمده‌ای ندارد . در کامپایل کردن برنامه, معنای برنامه باید حف
ظ شود , ولی در تبدیل فرمت فایل , مشهود نیست . به دلیل دو عامل زیر , امپایلر می‌توان عمل کند:
رودی به یک زبان برنامه سازی است و در نتیجه دارای ساختاری است که در مراجع آن زبان مشخص شده است .
*معنای ورودی بر اساس این ساختار توصی
ف می‌شود و به آن ساختار مربوط است
این عوامل موجب می‌شوند تا کامپایلر برنامه را "درک کند " و معنای آن را در یک نمایش معنایی جمع آوری کند .هریک از دو عامل فوق , در زبان مقصد نیز وجود دارد . بدین ترتیب , کامپایلر می‌تواند معنای جمع آوری شده را بر حسب ساختار زبان مقصد ارائه کند .
بخشی از کامپایلر که متن زبان منبع را تحلیل می‌کند , ((پردازشگر ))جلویی و بخشی از کامپایلر که زبان مقصد را ترکیب می‌کند, پردازشگر نهایی نام دارد اگر کامپایلر به خوبی طراحی شده باشد, پردازشگر نهایی, کاملا از زبان مقصد و پردازشگر نهایی از زبان منبع بی خبر است . هر یک از این دو بخش و از نمایش معنایی برنامه خبر دارند .این تفکیک دقیق , دلایل فنی دارد و منجر به کامپایلرهای ساخت یافته می‌شود.
با توجه به توضیحاتی که مطرح شده , حالت دیگری از عملیات برای کامپایلر پیشنهاد می‌شود
: اگر تمام داده‌های ورودی مورد نیاز , فراهم باشند, کامپایلر می‌تواند مشخص شده توسط معنای برنامه را بدون تبدیل به شکل دیگر , اجرا نماید . در این صورت به جای مولد کد پردازشگر نهایی, ((مفسر ))پردازشگر نهایی قرار می‌گیرد و این برنامه, مفسر نامیده می‌شود . چند دلیل برای این کار وجود دارد . یکی از دلایل مهم این است که مفسر معمولا به ماشین خاصی اجرا می‌گردد. به عبارت دیگر , استفاده از مفسر منجر به افزایش قابلیت حمل می‌گردد. دلیل دیگر این است که نوشتن مفسر, آسانتر از پردازشگر نهاییت کامپایلر است .دلیل سوم برای استفاده از مفسر به جای کامپایلر این است که , اجرای مستقیم برنامه از معنای زبان , عیب یابی و گزارش خطا را آسانتر می‌کند . دلیل چهارم این است که امنیت از طریق مفسرها افزایش می‌یابد . این کار , در جاوا اهمیت فراوانی دارد.
+__در تاریخچه کامپایلر سه دوره می‌توان در نظر گرفت__:
 +!! از 1945تا1960:تولید کد
 +
 +
 +{picture=img/daneshnameh_up/4/44/compics0070.png}
 +
 +
 +{*در این دوره ,زبانها به تدریج به وجود آمدند و ماشینها چندان متعارف نبودند . مسئله این بود که چگونه باید کدی را برای یک ماشین تولید کرد . با توجه به اینکه برنامه نویسی به زبان ((اسمبلی ))رواج داشت , این مسئله وخیمتر شد. استفاده از کامپایلر , برنامه نویسی خودکار نامیده شد . طرفداران ((زبانهای سطح بالا)) می‌ترسیدند که کد تولید شده نسبت به زبان اسمبلی کارایی چندان نداشته باشد. اولین کامپایلر ((فرترن))(شریدان 1959) به خوبی بهینه سازی شد *}
 +!! از 1960تا1975 :تجزیه کردن
 +{*در دهه‌های 1960و1970 زبانهای برنامه‌سازی جدید به وجود آمدند و طراحان زبان معتقد بودند که طراحی سریع کامپایلر برای زبان جدید , مهمتر از وجود کامپایلری با کد کارآمد است .بدین ترتیب , در ساخت کامپایلر به پردازشگر جلویی تاکید شده است . در همین زمان , مطالعه زبانهای رسمی , تکنیکهای قدرتمندی را برای ساخت پردازشگر جلوی , بخصوص تولید تجزیه کننده به وجود آورد*}
 +!! از 1975 تاکنون :تولید کد و بهینه سازی کد
-((ساختار کامپایلر)) +{*از 1975 تاکنون , تعداد زبانهای جدید و انواع ماشین مختلف کاهش یافت در نتیجه نیاز به کامپایلرهای سریع و ساده یا سریع و ناقص برای زبانها یا ماشینهای جدید , کاهش یافت . بزرگترین آشفتگی در طراحی زبان و ماشین خاتمه یافت و افراد خواستار کامپایلرهای قابل اعتماد , کارآمد و با واسط کاربر مناسب شدند . بدین ترتیب , توجه کیفی به کد بیشتر شد زیرا با تغیر اندکی که در ساختار ماشینها ایجاد می‌شود , طول عمر کدها افزایش می‌یابد.در همین دوره , مدلهایی در برنامه نویسی به وجود آمدند که برنامه نویسی ((تابع))ی , ((منطق))ی و ((توزیع))ی نمونه‌های از این مدلها هستند, خواسته‌های زمان اجرای این زبانها نسبت به زبانهای دستور, افزایش یافت .*}
---
!شرح مختصری بر کامپایلر
-!ریخچه کامپایلر />
__
ر تایه کامایلر ه وره میوان ر ن گت__: /> />#ا 1945تا1960:وی کد />ر ین د بنها به ی به وو آمن مین ندان معر ندند . مه این که چگونه ی کدی را بای ی مین تلی ک . ا ه به اینه برنامه نوی به زبان ((اسمبلی ))وا ات , این م یمتر شد. تفاده کامپایلر , بنه نویی ودک نایده . رداران ((های سح اا)) متریدد که کد توی شده ست زبان اسمبی کارایی چندا شه اد. این کامپایل ((فرتر))(ریان 1959) ب خوی هیه ی />#ز 1960تا1975 :یه کرن
ر ههای 19601970 انای برنامه‌سازی ی به وود آمدن ران زبن م ب که راحی سری کامپایلر ری ان دی , مم ا وود کامپایلری ا کد کارآم است .بی تی , خ کامپایلر ب رداگر لیی تاکی ده ا . در همین ا , ماه زباهی رمی , تکنیکهای درتمنی ا برای ساخت پرداگر جوی , بخصو تید تی کد به و و
#از 1975 اکون :تید کد و ین ای کد />از 1975 اکو , تعدد زبانی جدید و نو ماشی مخت کا ی ر نیه نیاز به کامپایلرهای ریع اد یا ی ناقص رای انها یا مایهی ید , کاهش یا . بررین فگی ر ی ان و ماشین خاتمه یافت و ارا استر کامپایلرهای ا اماد , کامد و سط کارر نب شدند . بدین رتیب , وج ه کد یفی یر د و یرا ا یر اندکی که د اتار ماشینه ایج می‌د , مر کها افزایش می‌ید.در همین و , دهایی ر برناه یسی به وجو من که برنامه نیی ((تا))ی , ((منطق))ی ((زی))ی نمونهای از ای ملها هستد, واتی زمن ای این زبانها ت ه زبانهای دور افای یاف .
+{*ه ور کلی , کامپایلر رنامه‌ی ست ه متن برنامای ر که ه یک بان رنمه‌زی وشته شده ات ,به عنوان وودی ی‌پیرد , و روی آن , بنامهای به یک ن دیگ است , به وی که منی آ من غییر نی‌کن. ای فرآیند , در زبان بیعی , رجه ن دارد. ((مج))ها لت یک زبان یی را به بان طبیعی دیر جمه می‌کنند. تریا تمام کمپیلها ,رمه‌ای به یک زبان منبع را رفته به برنامهی به زبان مقصد تبدیل می‌کنند . ه عنوان مال , بان منع می‌تواند c و زبان مق ی‌تاند زبا مشین برای کامپیوتر ((پنتیوم)) باشد. انی که و کامپایلر ب نوته میود, ا پیاده ز ن دارد.
علت
انجام ه این اس که , ((خت ازار)) عملیاتی ر انجام مدد که توسط عنای رنامه توصیف می‌شود . به طر کلی , ست زار تنها منبع اقعی انجام محاسبات است. اجرای برنا جمه شه, امل واندن دادای آن بار فرمت خاص , و چاپ نتای با فرمت دیگری است . داد‌هی ورود میواند از منابع تعددی خونده شود , مثل ((فایل))ها , ((فحه کلید)) ((پکیج))‌های ((که‌))ه همین تیب , روجی نیز می‌تواند فیلها , ((صفحه نمایش ریانه)) , و چاپگر قرار گیرد .
رای رجه برنامه,از کامپایر تفاده می‌کنی . کامپایلر برنامه‌ای که وودی آن , ایلی ا فم متن بنامه و جی آ فایلی با کد جرایی است .
ب
رای هیه یک کامپایلر , کمپایلر یگری اجرا می‌کنیم که وودی نت من این کمپایلر و روجی آن , کد اجرایی برای این کامپایلر ست . این فرآیند کامپیل است . اگر زبن منبع , همان زبان پیاد ز باشد, و متن منبعی که کمپایل می‌شود, نه ید خو کامپایلر باشد, ای رآیند خودرانی نم ارد.
امپایل کرن یک برنامه‌, ا تبدیل رمت یک فایل به فرمت دیگر , مثل ((EBCDIC)) به ((اسکی ))فاوت مده‌ای ندا . در کامپایل کردن راه, منای برمه باید حظ شود . به و دلیل زیر کمپایلر می‌تواند کار کند:
*ورودی, به
یک زبان برنامه سازی است در نیجه ارای ساختاری ا ه ر مراجع آ زبان مشخص ده است .
*
عای ورودی بر اساس این ساخت توصی ی‌شد , به اختار مبو ست.
این وال موجب می‌شوند تا کاایلر برنامه را "درک کند " و مای آن را در یک مایش منایی مع آوری کند .هریک از دو ال فو , د زبان قد نیز وجود دارد . دین تیب , کامپایر می‌تاد معنای ج آوری د ا ر حسب ساختار زبان مق ارائه کند .
بخش
ی از کامپایلر که متن زبان منع را تحلیل ی‌کند , ((پداشر ))جویی و بخشی از کمپیل ک زبان مقص را ترکیب می‌کن, پدازشگر نهایی نام داد اگر کامپایر به وبی احی شده باشد, پردازشگر نهایی, کال از زبن مبدا و پرزشگر جلویی از زبان من ی بر . ه یک این دو بخش از نمایش معنایی برنامه خبر دارند .این تفکیک دقیق , دلایل فنی دارد و منجر به کامپایلرهای ساخت یافته می‌شود. />حات دیگری ا لیات رای کامپایلر پیشنهاد می‌شود: اگر تام اد‌های ورودی مورد نیا , فاهم باشند, کامپیل می‌تواند مفهوم مص شد وسط معنای برنمه را بدن دیل به شکل دیگر , اجرا نماید . در این ورت به ای مو کد پردازشر نهایی, ((مفر ))پردازشگر نهایی قر می‌گید و ین برنامه, مفر نامیده می‌و . چند دلیل برای این کار وجود دارد . یکی از دلیل مهم ین ات که مفسر معمولا در ماشین اصی اج می‌گدد. ب عبارت دیگر , ستاد ز مفسر منر به افزایش قابلیت حمل می‌گد. لیل دیر این ست که نوت مفسر, آساتر از پردازشگر هاییت کمپایلر است .دلیل سوم برای استاده از سر به جی کمپیلر این ست که , اجرای مستقیم برنامه , عیب یابی و گزارش خطا را آسانتر ی‌کن . دلیل چهام ین است که امنیت از طریق فسرها زای می‌یابد . این کار , در جاوا اهمت راوانی دارد.*}
---
!اج
زاي كاپايلر />__هر كامپيلر از قسمت هاي اصلي زير تشكيل شده است__:
*((
ز تحليلر لوي ))
*((ف
ا تحلگ نحوي ))
*((فا
ز تحليلگر منايي)) />*((فا ولي كننده كد مياني)) />*((فاز بهينه ساز ))
*((ف
ز توليد كننه كد))
__ و ني
ز دو بخش كمكي:__
*((
اداره كننده خطا)) />*((مدي دول نما ها))
---
یونهای خاجی />*[http://en.wikipedia.org/wiki/Compiler ]
*[http://www.codepedia.com/compile ]
*[http://gcc.gnu.org/ ]
*[http://www.caller.me.uk/Compilr/ ]
*[http://www.kegel.com/crosstool/ ]
*[http://tack.sourceforge.net/ ]
*[http://citeseer.ist.psu.edu/cs?q=compiler ]
*[http://compilers.iecc.com/ ]
*[http://compilers.iecc.com/crenshaw/ ]
*[http://www.gtoal.com/software/CompilersOneOhOne ]
*[http://www.cafm.lsbu.ac.uk/hwcomp/ ]
*[http://www.jiscmail.ac.uk/lists/hwcomp.html ]
#@^

تاریخ شماره نسخه کاربر توضیح اقدام
 شنبه 22 مهر 1385 [09:44 ]   20   زینب معزی      جاری 
 شنبه 22 مهر 1385 [09:44 ]   19   زینب معزی      v  c  d  s 
 شنبه 22 مهر 1385 [09:32 ]   18   زینب معزی      v  c  d  s 
 شنبه 22 مهر 1385 [09:22 ]   17   زینب معزی      v  c  d  s 
 سه شنبه 21 شهریور 1385 [09:55 ]   16   زینب معزی      v  c  d  s 
 سه شنبه 21 شهریور 1385 [09:48 ]   15   زینب معزی      v  c  d  s 
 شنبه 10 بهمن 1383 [16:12 ]   14   محمد مجددی      v  c  d  s 
 شنبه 07 آذر 1383 [20:42 ]   13   محمد مجددی      v  c  d  s 
 شنبه 07 آذر 1383 [20:39 ]   12   محمد مجددی      v  c  d  s 
 شنبه 07 آذر 1383 [20:36 ]   11   محمد مجددی      v  c  d  s 
 شنبه 07 آذر 1383 [12:07 ]   10   محمد مجددی      v  c  d  s 
 شنبه 07 آذر 1383 [12:06 ]   9   محمد مجددی      v  c  d  s 
 شنبه 07 آذر 1383 [12:04 ]   8   محمد مجددی      v  c  d  s 
 شنبه 07 آذر 1383 [11:50 ]   7   محمد مجددی      v  c  d  s 
 شنبه 07 آذر 1383 [11:49 ]   6   محمد مجددی      v  c  d  s 
 یکشنبه 01 آذر 1383 [08:13 ]   5   محمد مجددی      v  c  d  s 
 دوشنبه 25 آبان 1383 [23:25 ]   4   محمد مجددی      v  c  d  s 
 دوشنبه 25 آبان 1383 [22:58 ]   3   محمد مجددی      v  c  d  s 
 دوشنبه 25 آبان 1383 [22:55 ]   2   محمد مجددی      v  c  d  s 
 پنج شنبه 21 آبان 1383 [07:21 ]   1   محمد مجددی      v  c  d  s 


ارسال توضیح جدید
الزامی
big grin confused جالب cry eek evil فریاد اخم خبر lol عصبانی mr green خنثی سوال razz redface rolleyes غمگین smile surprised twisted چشمک arrow



از پیوند [http://www.foo.com] یا [http://www.foo.com|شرح] برای پیوندها.
برچسب های HTML در داخل توضیحات مجاز نیستند و تمام نوشته ها ی بین علامت های > و < حذف خواهند شد..