ورود ثبت

وارد حساب کاربری خود شوید

نام کاربری *
رمز عبور *
مرا به خاطر بسپار

ایجاد یک حساب کاربری

تکمیل کردن تمام فیلدهای مشخص شده با (*) لازم است.
نام *
نام کاربری *
رمز عبور *
تایید رمز عبور *
ایمیل *
تایید ایمیل *
کد امنیتی *

دانلود کتاب

  

  

دانلود رایگان کتاب با لینک مستقیم

 کتاب، مقاله و مطلب خود را در 30000 عنوان کتاب، مقاله، مجله و ... سایت روبوک جستجو و با لینک مستقیم دانلود نمایید.

با توجه به بالا بودن تعداد کتاب ها، اگر موفق به پیدا کردن کتاب خود نشدید، لطفا در جستجو جزییات بیشتری را بنویسید.

  

  

سفارش ترجمه و تایپ

سفارش ترجمه و تایپ

سه شنبه, 22 بهمن 1392 ساعت 02:50

اصول طراحي كامپايلر

نویسنده
این مورد را ارزیابی کنید
(3 رای‌ها)
اصول طراحي كامپايلر - 5.0 out of 5 based on 3 votes

اصول طراحي كامپايلر

جزوه اصول طراحي كامپايلرها

 دكتر سعيد پارسا

دانشكده كامپيوتر دانشگاه علم و صنعت ايران

خوشحاليم كه توانستيم شايد يكي از تعداد قليل دانشگاههاي معتبر در سطح دنيا باشيم كه توانسته ايم در درس كامپايلرها علم كامپايلرنويسي براي سطح وب را به صورت عملي ارائه نماييم. كامپايلرها براي برنامهنويسي وب گذري از برنامه نويسي پيچيده و غيرمانوس زبانهاي اسكريپتي به سمت Microsoft زبانهاي سطح بالا ميباشد.

به خصوص مشاهده ميكنيم كه حتي نموده ASP++ را تبديل به زبان سطح بالاي ASP نيز متوجه اين نكته شده و است. پس از ارائه تكنيكهاي كامپايلرنويسي به صورت عملي براي زبان كه XML كه توسط آقاي امينايي ارائه شده و كامپايلر براي زبان HTML توسط آقاي باقريان ارائه شده است، كامپايلري براي بايتكد و به صورتدر اين بخش ارائه شده است. اميدواريم كه گامي به سوي Java هاي Appletتوليد محصولات ملي و آغازي نوين براي صدور نرمافزار بر خلاف تلاش آنان كه در راه نابودي علم كامپيوتر تلاش ميكنند، باشيم.


 JVM يا Java Virtual Machine، Java

يكي از اجزاء اصلي يك كامپيوتر مجازي است كه معمولا به صورت نرم افزاري بر روي JVM يك سيستم سخت افزاري و سيستم عامل آن پياده سازي مي شود و برنامه برنامه هايي كه ، JVM را اجرا مي كند. با استفاده از Java هاي ترجمه شده نوشته مي شوند ، بدون نياز به هيچگونه تغيير بر روي Java به زبان ماشينها و سيستم عاملهاي مختلف اجرا مي شوند.

اين مساله ميتواند انگيزهاي قوي براي نوشتن كامپايلرهايي باشد كه كد خروجي آنها نيز با قابل اجرا باشد. اين موضوع در دانشكده كامپيوتر دانشگاه JVM استفاده از استاد درس اصول طراحي دكتر سعيد پارسا  علم و صنعت ايران توسط كامپايلرها در مقطع كارشناسي و كامپايلرهاي پيشرفته در مقطع كارشناسي ارشد مورد توجه قرار گرفته است. تقريبا از سال ١٣٧٦ با توجه به رويكرد درس كامپايلرها و استاد اين درس به اين سمت، دانشجويان اين دانشكده پروژههاي مختلفي در اين زمينه انجام دادهاند كه به عنوان نمونه ميتوان به هاي جاوا اشاره كرد. در اين Applet و راهنماي ايجاد Jacomizer پروژه مستندات ما تلاش كردهايم تا مباني علمي لازم براي اين رويكرد را فراهم كنيم. اميد است كه راهگشاي دانشپژوهان ايران عزيزمان باشد.

  Java Virtual Machine
را Java يك كامپيوتر مجازي است كه برنامه هاي ترجمه شده JVM ترجمه مي شوند، JVM براي اجرا توسط Java اجرا ميكند. تمام برنامه هاي روي سكوي كاري JVM بنابراين براي اجراي اين برنامه ها حتما بايد  و قابليت سوارشدن روي هر سيستم JVM پيادهسازي شده باشد. حجم كم JVM سخت افزاري و حتي سيستم هاي كوچكي مانند تلفن هاي سلولي ، به حضور در يك زمان در همه جا ) كمك مي كند. ) Ubiquity در تحقق شعار
Java برنامه هاي ترجمه شده Java Virtual Machine يا Java ماشين مجازي سكوي سخت افزاري و سيستم عامل


 Java bytecode
ناميده Java bytecode به يك قالب خاص كه Java برنامه هاي ها را اجرا مي كند، بنابراين bytecode ، JVM . ميشود، ترجمه مي شوند در نظر گرفت. كامپايلر JVM ها را به عنوان زبان ماشين bytecode ميتوان را مي خواند و آنها را به صورت .java با پسوند source فايلهاي ، Java ذخيره مي كند. در اين .class درآورده در يك فايل با پسوند bytecode ايجاد .class وجود دارد، يك فايل source پروسه به ازاء هر كلاسي كه در مي شود.

يك ترتيب از دستورالعملهاي ، bytecode هر رشته اي از JVM از نظر و ( opcode ) پشتسرهم ميباشد. هر دستورالعمل شامل يك بايت كد عمل ميگويدكه چه عملي JVM به opcode . تعدادي ( صفر يا بيشتر)عملوند است
بايد انجام شود. اگر اين كد عمل داراي عملوند باشد، عملوندهاي آن بلافاصله بعد از كد عمل ميآيند. هر كد عمل با يك دستور شبه اسمبلي نيز مي گويد يك صفر JVM مشخص ميشود. مثلا دستوري وجود دارد كه به iconst_ 0 و دستور شبه اسمبلي آن 0 x در پشته بگذارد. كد اين دستور 60 است. اين دستور هيج عملوندي ندارد. به عنوان يك مثال ديگر، دستوري مي گويد از مكان حافظه كنوني به كدام مكان حافظه JVM وجود دارد كه به  ١٦ بيتي علامتدار offset برود. اين دستور يك عملوند دارد كه به صورت يك goto 0 و معادل شبه اسمبلي آن xA ميآيد. كد اين دستور 7 opcode بعد از است.


JVM سخت افزار مجازي
را ميتوان به ٤ بخش تقسيم كرد:

JVM سخت افزار مجازي يك اين قسمتها . method area و ، garbage-collected heap ، رجيسترها، پشته JVM مانند ماشيني كه تشكيل ميدهند، انتزاعي هستند، ولي حتما بايد در هر بهگونهاي پيادهسازي شده باشند.

JVM به صورت ٣٢ بيتي بيان ميشوند، بنابراين JVM آدرسها در مي تواند تا ٤ گيگابايت فضاي حافظه را آدرسدهي كند. هر رجيستر يك و ، garbage-collected heap ، آدرس ٣٢ بيتي را نگهداري ميكند. پشته هركدام جايي درون اين فضاي حافظه قابل آدرسدهي قرار method area را JVM دارند. مكان دقيق اين فضاهاي حافظه به تصميم كسي كه پيادهسازي ميكند بستگي دارد.

انواع داده اوليه كمي دارد كه عبارتند

JVM . ٣٢ بيت است JVM هر كلمه در ٦٤ بيت ) ، ) long ، ( ٣٢ بيت ) int ، ( ١٦ بيت ) short ، ( ٨ بيت ) byte : از ١٦ بيت ) كه به جز نوع ) char ٦٤ بيت ) ، و ) double ، ( ٣٢ بيت ) float است ) همه علامتدار Unicode كه يك كاراكتر بدون علامت ) char داده قابل تطبيق هستند. Java هستند. اين انواع به راحتي با نوع داده هاي زبان است كه به صورت يك آدرس ٣٢ object handle ، يك نوع داده ابتدايي ديگر اشاره ميكند. heap روي object بيتي به يك
ها را دربرميگيرد، bytecode محدودهاي است كه method area چون garbage-collected به صورت بايتي سازماندهي شده است. اما پشته و از يك ساختار ٣٢ بيتي استفاده ميكنند. heap است ( يعني تمام عمليات مورد stack-based يك سيستم JVM چون ها را با يك پشته انجام ميدهد) نيازي به bytecode نياز در حافظه براي
JVM رجيسترهايي براي نگهداري مقادير مياني ندارد. بنابراين در طراحي و سه رجيستر براي مديريت ( program counter ) فقط يك شمارنده برنامه پشته پيشبيني شده است كه اين مساله ( كم بودن تعداد رجيسترها ) موجب ميشود. JVM كوچك شدن مجموعه دستورات براي نگهداشتن آدرس حافظه اي كه بايد pc از رجيستر JVM ، optop دستورات درون آن اجرا شوند استفاده ميكند. سه رجيستر ديگر كه متد درحال اجرا stack frame نام دارند به قسمتهاي مختلف vars و ، frame
( قسمتي از پشته كه به متد درحال اجرا اختصاص دارد ) اشاره ميكنند. هر متد وضعيت آن متد ( مقادير متغيرهاي محلي، نتايج مياني، stack frame محاسبات و غيره) را براي هر فراخواني به صورت جداگانه نگهداري ميكند مخصوص به خود را دارد). stack frame (يعني هر فراخواني : program counter و method area program . ها قرار دارند bytecode جايي است كه method area همواره به آدرسي در حافظه اشاره ميكند كه بايد دستورات آن counter اگر اين دستور باعث ، bytecode آدرس اجرا شوند. پس از اجراي هر دستور را برابر آدرس program counter مقدار JVM ، نشود ( jump ) يك پرش دستوري قرار ميدهد كه بلافاصله پس از دستور اجراشده قرار دارد. پشته و رجيسترهاي مربوط به آن از پشته براي نگهداري پارامترهاي موردنياز و نتايج حاصل Java در ها و برگرداندن مقادير method ارسال پارامتر به ، bytecode از دستورات بازگشتي ، و نگهداري وضعيت هر متد در حال اجرا استفاده ميشود. stack frame هم به قسمتهاي مختلف vars و ، frame ، optop رجيسترهاي جاري اشاره ميكنند.


سه بخش مجزا وجود دارد:

متغيرهاي محلي ( stack frame در هر و پشته عملوندها ،( execution environment ) محيط اجرا ،( local variables بخش متغيرهاي محلي، تمام متغيرهاي محلي فراخواني .( operand stack ) نگهداري vars جاري متد را نگهداري ميكند. آدرس اين بخش در رجيستر stack به نگهداري عمليات خود execution environment ميشود. بخش نگهداري ميشود. پشته frame اختصاص دارد و آدرس آن در رجيستر  از آن براي bytecode عملوندها نيز به عنوان فضاي حافظهاي كه دستورات عملوندهاي خود را از bytecode اجرا استفاده ميكنند عمل ميكند. دستورات به optop اين پشته برميدارند و نتايج را نيز در اين پشته ميگذارند. رجيستر بالاي پشته عملوندها اشاره ميكند.

برای توضیح کامل مطلب و لینک دانلوداصول طراحي كامپايلرها لطفا کلیک کنید تا به ادامه مطلب  بروید.

 

پنج شنبه, 15 اسفند 1392 ساعت 23:10

اصول طراحی کامپایلر همراه با نمونه سوال

نوشته شده توسط
این مورد را ارزیابی کنید
(5 رای‌ها)
اصول طراحی کامپایلر همراه با نمونه سوال - 5.0 out of 5 based on 5 votes

اصول طراحی کامپایلر همراه با ضمیمه نمونه سوالات امتحانی (دانشگاه پیام نور)

تعریف کامپایلر
برنامه ای است که متن یک برنامه به زبان برنامه نویسی A را دریافت نموده وپس از اعمال تغییرات خاصی به طوری که معنا و مفهوم آن عوض نشود به زبان برنامه نویسی B تبدیل میکند.

کامپایلر زبان سطح(high level) بالا را به زبان سطح پائین (low level)تبدیل میکند.
اگرتمام داده های ورودی مورد نیاز کامپایلرفراهم باشدکامپایلرمیتواندعمل مشخص شده توسط معنای برنامه را بدون تبدیل به شکل دیگر اجرا نماید.


ساختار مفهومی یک کامپایلر:

کد اجرایی پردازشگر نهایی
تحلیل وترکیب نمایش معنایی برنامه
کنترل ترتیب ساختار پردازش اولیه
تجزیه متن برنامه

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

تفاوت های بین تفسیر و ترجمه:

  1.  برنامه مفسر interpretor زبان را به صورت مستقیم اجرا میکند ولی مترجم ابتدا به زبان مقصد سپس توسط مفسری خاص ان را اجرا میکند
  2.  در ترجمه میتوان یک بار ترجمه کرد و چند بار از ان استفاده نمود ولی در تفسیر یک بار ترجمه و یک بار اجرا میشود.
  3.  سرعت اجرا در روش ترجمه بیشتر از سرعت اجرا در روش تفسیر است.
  4.  در روش تفسیر به دلیل یک مرحله ای بودن ترجمه و اجرا ممکن است کلید خطاها کشف نشود ولی در روش ترجمه چون در دو فاز مختلف (فاز اول کامپایل وفاز دوم تفسیر)انجام میشود کلید خطاها قابل کشف هستند.


مراحل کامپایل:

  1.  lexical analayzer (تحلیل گر لغوی)
  2.  syntax analayzer (تحلیل گر نحوی) 
  3.  semantic analayzer (تحلیل گر معنایی)
  4. 4inter mediate code generator (تولید کننده کد میانی)
  5.  code oplimization (بهینه ساز کد میانی)
  6.  code generation ()
  7.  synbol table (جدول سمبلها)
  8. 8error handling ()

 منبع : تعریف کامپایلر

 

اصول کامپایلر

مرحله تحلیل گر لغوی 

در این مرحله کامپایل متن برنامه ورودی حرف به حرف خوانده میشود وبه دنبالهای از نشانه ها یا tokenها عبارتند از:کلمات کلید,عملگرها,جداکننده ها,ثابت ها,شناسه ها,... در این مرحله در جدول سمبلها با فرمت خاصی ذخیره می شوند.

برای توضیح کامل مطلب و لینک دانلود  اصول طراحی کامپایلر   لطفا کلیک کنید تا به  ادامه مطلب  بروید. 

خبرنامه

آدرس ایمیل خود را در کادر زیر وارد نمایید تا از آخرین اخبار مطلع شوید.

تماس با ما

اطلاعات تماس گروه روبوک

  • شماره پیامکی: 50002853627180
  • شماره تماس : 09387137519 (9 صبح الی 4 بعدازظهر)
  • آدرس ایمیل : این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید

با ما در تماس باشید

ما را در صفحات اجتماعی دنبال نمایید...