الكتلة الأساسية
في تصميم المترجمات ، تُعرَّف الكتلة الأساسية بأنها سلسلة برمجية خطية لا تتفرع إلا عند المدخل، ولا تتفرع إلا عند المخرج. [ 1 ] [ 2 ] هذا الشكل المقيد يجعل الكتلة الأساسية سهلة التحليل. [ 3 ] عادةً ما تُقسِّم المترجمات البرامج إلى كتلها الأساسية كخطوة أولى في عملية التحليل. تُشكِّل الكتل الأساسية رؤوسًا أو عُقدًا في مخطط تدفق التحكم .
تعريف
يحتوي الكود في الكتلة الأساسية على ما يلي:
- نقطة دخول واحدة ، مما يعني أن أي كود بداخلها ليس وجهة لتعليمات القفز في أي مكان في البرنامج.
- نقطة خروج واحدة، مما يعني أن التعليمات الأخيرة فقط هي التي يمكن أن تتسبب في بدء البرنامج بتنفيذ التعليمات البرمجية في كتلة أساسية مختلفة.
في ظل هذه الظروف، عندما يتم تنفيذ أول تعليمة في كتلة أساسية، يتم بالضرورة تنفيذ بقية التعليمات مرة واحدة بالضبط وبالترتيب. [ 4 ] [ 5 ]
قد يكون الكود عبارة عن كود مصدري ، أو كود تجميع ، أو أي تسلسل آخر من التعليمات.
بصورة أكثر رسمية، تشكل سلسلة التعليمات كتلة أساسية إذا:
- تهيمن التعليمات الموجودة في كل موضع (تنفذ دائمًا قبل) جميع التعليمات الموجودة في المواضع اللاحقة.
- لا يتم تنفيذ أي تعليمات أخرى بين تعليمتين في التسلسل.
هذا التعريف أعمّ من التعريف البديهي في بعض النواحي. على سبيل المثال، يسمح بالانتقال غير المشروط إلى تسميات لا تستهدفها عمليات الانتقال الأخرى. يجسّد هذا التعريف الخصائص التي تجعل التعامل مع الكتل الأساسية سهلاً عند بناء الخوارزمية.
تُسمى الكتل التي قد ينتقل إليها التحكم بعد الوصول إلى نهاية كتلة ما بالكتل اللاحقة لتلك الكتلة ، بينما تُسمى الكتل التي قد يكون التحكم قد انتقل منها عند دخول كتلة ما بالكتل السابقة لتلك الكتلة . ويمكن الانتقال إلى بداية الكتلة الأساسية من أكثر من موقع.
خوارزمية الإنشاء
تعتمد خوارزمية توليد الكتل الأساسية من قائمة التعليمات البرمجية على مبدأ بسيط: يقوم المحلل بمسح التعليمات البرمجية، ويحدد حدود الكتل ، وهي التعليمات التي قد تبدأ أو تنهي كتلة ما لأنها إما تنقل التحكم أو تستقبله من نقطة أخرى. بعد ذلك، يتم ببساطة "قص" القائمة عند كل نقطة من هذه النقاط، وتبقى الكتل الأساسية.
لاحظ أن هذه الطريقة لا تولد دائمًا كتلًا أساسية قصوى ، وفقًا للتعريف الرسمي، ولكنها عادة ما تكون كافية (الكتل الأساسية القصوى هي كتل أساسية لا يمكن توسيعها عن طريق تضمين الكتل المجاورة دون انتهاك تعريف الكتلة الأساسية [ 6 ] ).
المدخلات : سلسلة من التعليمات (غالباً ما تكون تعليمات ذات ثلاثة عناوين ). [ 7 ] المخرجات : قائمة بالكتل الأساسية، حيث توجد كل تعليمة ذات ثلاثة عناوين في كتلة واحدة فقط.
- حدد العناصر الرئيسية في الكود. العناصر الرئيسية هي تعليمات تندرج تحت أي من الفئات الثلاث التالية:
- إنها التعليمات الأولى. والتعليمات الأولى هي القائد.
- الهدف من تعليمات الانتقال/القفز المشروطة أو غير المشروطة هو قائد.
- التعليمات التي تلي مباشرة تعليمات الانتقال/القفز المشروطة أو غير المشروطة هي تعليمات قيادية.
- انطلاقاً من قائد، تُشكّل مجموعة جميع التعليمات اللاحقة حتى القائد التالي (باستثناء القائد التالي) الكتلة الأساسية المقابلة للقائد البادئ. وبالتالي، فإن لكل كتلة أساسية قائداً.
تتضمن التعليمات التي تُنهي كتلة أساسية ما يلي:
- الفروع غير المشروطة والمشروطة ، المباشرة وغير المباشرة؛
- يعود إلى الإجراء المُستدعي؛
- التعليمات التي قد تؤدي إلى حدوث استثناء ؛
- يمكن أن تكون استدعاءات الدوال في نهاية كتلة أساسية إذا لم تتمكن من العودة، مثل الدوال التي تطلق استثناءات أو الاستدعاءات الخاصة مثل C 's
longjmpوexit.
تتضمن التعليمات التي تبدأ كتلة أساسية جديدة ما يلي:
- نقاط دخول الإجراءات والوظائف؛
- أهداف القفزات أو التفرعات؛
- تعليمات "التنفيذ التلقائي" التي تتبع بعض الفروع الشرطية؛
- التعليمات التي تلي تلك التي تُطلق استثناءات؛
- معالجات الاستثناءات.
لاحظ أنه نظرًا لعدم إمكانية تجاوز التحكم لنهاية كتلة أساسية، فقد يلزم تعديل بعض التعليمات للعثور على الكتل الأساسية. على وجه الخصوص، يجب تغيير الفروع الشرطية المتتالية إلى فروع ثنائية الاتجاه، ويجب إضافة قفزات غير مشروطة بعد استدعاءات الدوال التي تُطلق استثناءات. قد يتطلب ذلك إضافة تسميات إلى بداية كتل أخرى.
انظر أيضاً
مراجع
- ↑ هينيسي، جون ل.؛ ديفيد أ. باترسون. هندسة الحاسوب: منهج كمي . إلسيفير، 2011.
- ↑ كوبر، كيث دانيال؛ توركزون، ليندا (2012). هندسة المترجم ( الطبعة الثانية). أمستردام : إلسيفير/مورغان كوفمان. ص 231. ISBN 978-0120884780. OCLC 714113472 .
- ↑ "تحليل تدفق التحكم" بقلم فرانسيس إي. ألين.
- ↑ يوسفي، جواد (2015). "إخفاء أخطاء تدفق التحكم في الخلف الخاطئ باستخدام تكرار البيانات". المؤتمر الدولي الخامس لهندسة الحاسوب والمعرفة (ICCKE) لعام 2015. معهد مهندسي الكهرباء والإلكترونيات ( IEEE). الصفحات 201-205 . doi : 10.1109/ICCKE.2015.7365827 . ISBN 978-1-4673-9280-8.
- ↑ "إزالة التعبيرات الفرعية الشائعة العالمية" بقلم جون كوك.
- ^ تصميم المترجم الحديث بقلم ديك جرون، هنري إي بال، سيريل جيه إتش جاكوبس، وكوين جي لانغندوين، ص. 320.
- ↑ مبادئ وتقنيات وأدوات المترجمات، أهو سيثي أولمان.
روابط خارجية
- بناء المترجم
