CS477 - Module12
CS477 - Module12
واليُسمح بنشر أو تبادل هذه الملفات (شرعا ً وقانوناً) لغير المشتركين في الدورة
Compiler Design
Module 12 summary
Low-Level Optimizations
الل ر
الـ Low-Level Optimizationsبتتعامل مع التجمة بتاعة الكود بطريقة تستغل الجهاز أو الماكينة ي
ن ن
الل قريبة من الهاردوير.
يعن بتشتغل عل تحسي األكواد ي التنامج بشكل أحسن .ي هيشتغل عليها ر
تحسي بسيط بتّكز عل جزء صغت قوي من الكود (زي تعليمة أو ن
اثني) ن Peephole Optimization .1ده
ن
لتحسي األداء. وبيحاول يغته بشكل آمن
الل الكود هيشتغل عليها.
الل بتناسب الماكينة ي
الل هو اختيار التعليمات ي
Instruction Selection .2ي
Peephole Optimizations
ّ ن
تحسي بسيط قوي بتكز عل جزء صغت من الكود زي خط أو الـ Peephole Optimizationعبارة عن
المتة إنه سهل يتعمل ن يف آخر مرحلة من الـ ( Compilationتجميع الكود) ،لكن تأثته العام محدود.
خطي .ن
ن
الخصائص بتاعته:
ن
يعن بيأثر بس عل جزء صغت.
محل (Local in nature):ي
ي •
ن
معي(Pattern-driven). بيشتغل بنمط •
https://kbseducation.com/
0550602949 / 0557715267
جميع الحقوق محفوظة لمنصة KBS Education
واليُسمح بنشر أو تبادل هذه الملفات (شرعا ً وقانوناً) لغير المشتركين في الدورة
https://kbseducation.com/
0550602949 / 0557715267
جميع الحقوق محفوظة لمنصة KBS Education
واليُسمح بنشر أو تبادل هذه الملفات (شرعا ً وقانوناً) لغير المشتركين في الدورة
Instruction Selection
الل بنعمله Compileبحيث
الـ Instruction Selectionدي عملية اختيار التعليمات المناسبة للكود ي
تناسب المعمارية بتاعت المعالج.
الفكرة:
أكت من تعليمة ن يف بعض
نف البداية ،كل Nodeنف الشجرة ASTأو DAGبيتحول لتعليمات ،وده ممكن يكون ر
ي ي
الحاالت.
ر
الل من النوع CISCزي معمارية ،X86ممكن تعليمة واحدة تعمل أكت من حاجة زي: ن
لكن يف المعالجات ي
ر
المؤش)(Dereferencing a pointer فك •
)(Tree Coverage
بنمثل كل التعليمات كـ (Tree Templatesشجرة تعليمات) ،والـ Nodesبتاعتها ممكن تكون •
ريجيستات ،ثوابت ،أو أماكن ن يف الميموري.
ر
ر
نالف التطابق ،ونحولها
أثناء الـ ، Compilationالشجرة دي بتتم مقارنتها مع شجرة الكود ) (DAGبحيث ي •
لتعليمات ر
مباشة.
مثال:
تعليمة زي:
ADDQ Cj, R1
ر
وريجيست. دي ممكن تعمل جمع ر
مباشة ن
بي رقم ثابت
أمثلة من X86
التعليمات البسيطة : •
ر
لريجيست. MOV SCj, Riبتحول ثابت o
ر
لريجيست. MOV Mx, Riبتحمل قيمة من الميموري o
https://kbseducation.com/
0550602949 / 0557715267
جميع الحقوق محفوظة لمنصة KBS Education
واليُسمح بنشر أو تبادل هذه الملفات (شرعا ً وقانوناً) لغير المشتركين في الدورة
أكت من متغت يستخدموا نفس registerمن غت تعارض؟ يعن إزاي نخل رن
ي إدارة الموارد؟ ي •
https://kbseducation.com/
0550602949 / 0557715267
جميع الحقوق محفوظة لمنصة KBS Education
واليُسمح بنشر أو تبادل هذه الملفات (شرعا ً وقانوناً) لغير المشتركين في الدورة
وبالتاىل له أولوية أعل. لو المتغت بيتكرر جواه (loopحلقة تكرارية) ،ده معناه إنه بيحتاج عمليات ر
أكت o
ي
المتغتات نف (nested loopsحلقات متداخلة) كمان تاخد أولوية أعل ألن استخدامها ن
بتيد. o
ي
Conflicts Between Variables
المتغيات ممكن تتعارض؟
ر ليه
مش كل متغت محتاج registerخاص بيه. •
متغتين ممكن يشاركوا نفس الـ registerلو مفيش بينهم تعارض ن يف وقت االستخدام. •
https://kbseducation.com/
0550602949 / 0557715267
جميع الحقوق محفوظة لمنصة KBS Education
واليُسمح بنشر أو تبادل هذه الملفات (شرعا ً وقانوناً) لغير المشتركين في الدورة
(يعن ن يف تعارض).
ي
متقدرش تستخدم نفس اللون لو الـ nodesمتصلة ببعض ن o
.2الرسومات التخطيطية البسيطة ممكن نلونها بـ 4ألوان (أو أقل) ،لكن لو الجراف معقد ،ممكن نحتاج ر
أكت.
.3إيجاد أقل عدد ألوان ن يف الجراف ممكن يكون صعب) ، (NP-complete problemفبنستخدم طرق
تقريبية)(heuristics
خطوات شائعة لحل المشكلة:
.1نبتتب الـ nodesحسب عدد التعارضات ر
أكت واحد ليه edgesاألول
.2بعد كده ،بنبدأ نخصص لكل node registerمش مستخدم من الجتان بتوعه.
.3لو عدد الـ registersالمتاح خلص :
بنعلم الـ nodeدي كمتغت مش ن يف register. o
ر
لباف الجراف.
ونكمل ي o
الهدف من conflict graphهو إدارة المتغتات بطريقة تقلل التعارضات عل registers. •
https://kbseducation.com/
0550602949 / 0557715267
جميع الحقوق محفوظة لمنصة KBS Education
واليُسمح بنشر أو تبادل هذه الملفات (شرعا ً وقانوناً) لغير المشتركين في الدورة
ن
بنبن Conflict Graph: .3
ي
oكل nodeن يف الجراف بتمثل متغت.
الل "عايشة" ن يف نفس الـ basic blockوبيمنعهم من مشاركة ن
oالـ edgeبيوصل بي المتغتات ي
نفس الـ register
مثال عمل:
• ن يف الصورة ،الكود عل الشمال بيتقسم لـ basic
،blocksوكل متغت بيتخصص ً
بناء عل التداخالت
) (conflictsن يف الـgraph
Optimization Pitfallsمشاكل التحسينات
الحاجات الل الزم نخل بالنا منها:
.1النتيجة النهائية للكود :
ن
التحسي يدي نفس النتيجة األصلية لكل المدخالت. الزم الكود بعد o
التأثي عل Debugging:
ر .3
التحسينات القوية ممكن تغت طريقة عرض الكود ن يف الـ debuggerوتسبب سلوك غت متوقع. o
https://kbseducation.com/
0550602949 / 0557715267
جميع الحقوق محفوظة لمنصة KBS Education
واليُسمح بنشر أو تبادل هذه الملفات (شرعا ً وقانوناً) لغير المشتركين في الدورة
https://kbseducation.com/
0550602949 / 0557715267