التحكم في التبعية
التبعية التحكمية هي حالة يتم فيها تنفيذ تعليمات البرنامج إذا تم تقييم التعليمات السابقة بطريقة تسمح بتنفيذها.
تعتمد التعليمات B على التعليمات السابقة A إذا كانت نتيجة A تحدد ما إذا كان ينبغي تنفيذ B أم لا. في المثال التالي، التعليماتيعتمد التحكم على التعليمات. لكن،لا يعتمد علىلأنيتم تنفيذه دائماً بغض النظر عن نتيجة.
S1. إذا كان (أ == ب) S2. a = a + b S3. b = a + b
بشكل بديهي، توجد علاقة تحكم بين عبارتين A و B إذا
- من المحتمل أن يتم تنفيذ حكم الإعدام على (ب) بعد (أ)
- ستحدد نتيجة تنفيذ الأمر (أ) ما إذا كان سيتم تنفيذ الأمر (ب) أم لا.
ومن الأمثلة النموذجية على ذلك وجود تبعيات تحكم بين جزء الشرط في عبارة if والعبارات الموجودة في أجسامها الصحيحة/الخاطئة.
يمكن تقديم تعريف رسمي لاعتماد التحكم على النحو التالي:
بيانيقال إن التحكم يعتمد على بيان آخرإذا
- يوجد مسارمنلبحيث يكون كل بيان≠داخلوسيتبع ذلكفي كل مسار ممكن لنهاية البرنامج و
- لن يتبع ذلك بالضرورةأي أن هناك مسار تنفيذ منإلى نهاية البرنامج الذي لا يمر.
وباستخدام مفهوم (ما بعد) الهيمنة، يصبح الشرطان متكافئين.
- يهيمن المنشور على كل شيء
- لا يهيمن بعد
بناء تبعيات التحكم
تُمثل تبعيات التحكم أساسًا حدود الهيمنة في الرسم البياني العكسي لرسم بياني تدفق التحكم (CFG). [ 1 ] وبالتالي، تتمثل إحدى طرق إنشائها في إنشاء حدود ما بعد الهيمنة لرسم بياني تدفق التحكم، ثم عكسها للحصول على رسم بياني لتبعيات التحكم.
فيما يلي رمز زائف لإنشاء حدود ما بعد الهيمنة:
لكل X في عملية اجتياز تصاعدية لشجرة ما بعد الهيمنة، قم بما يلي : PostDominanceFrontier(X) ← ∅ لكل Y ∈ Predecessors(X) نفّذ ما يلي : إذا كان immediatePostDominator(Y) ≠ X: فإن PostDominanceFrontier(X) ← PostDominanceFrontier(X) ∪ {Y} انتهى. لكل Z ∈ Children(X) نفّذ ما يلي : لكل Y ∈ PostDominanceFrontier(Z) نفّذ ما يلي : إذا كان immediatePostDominator(Y) ≠ X: فإن PostDominanceFrontier(X) ← PostDominanceFrontier(X) ∪ {Y} انتهى. انتهى . انتهى .هنا، تمثل Children(X) مجموعة العقد في مخطط التدفق الحر (CFG) التي تهيمن عليها X مباشرةً ، بينما تمثل Predecessors(X) مجموعة العقد في مخطط التدفق الحر التي تسبق X مباشرةً . تجدر الإشارة إلى أنه لا تتم معالجة العقدة X إلا بعد معالجة جميع عقدها الفرعية. بمجرد حساب خريطة حدود ما بعد الهيمنة، سيؤدي عكسها إلى إنشاء خريطة من العقد في مخطط التدفق الحر إلى العقد التي تعتمد عليها في التحكم.
انظر أيضاً
مراجع
- ↑ سيترون، ر.؛ فيرانتي، ج.؛ روزن، ب.ك.؛ ويغمان، م.ن.؛ زاديك، ف.ك. (1989-01-01). "طريقة فعالة لحساب شكل التعيين الفردي الثابت". وقائع الندوة السادسة عشرة لجمعية ACM SIGPLAN-SIGACT حول مبادئ لغات البرمجة - POPL '89 . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 25-35 . doi : 10.1145/75277.75280 . ISBN 0897912942. S2CID 8301431 .
- المترجمون
