لماذا لا دول مجلس التعاون الخليجي تحسين البنيات?

StackOverflow https://stackoverflow.com/questions/118068

  •  02-07-2019
  •  | 
  •  

سؤال

نظم الطلب أن بعض الأوليات الانحياز إلى نقاط معينة في الذاكرة (رجات إلى وحدات البايت التي يتم مضاعفات 4, السراويل إلى وحدات البايت التي يتم مضاعفات 2 ، إلخ.).بالطبع, هذه يمكن أن يكون الأمثل للنفايات مساحة أقل في الحشو.

سؤالي هو لماذا لا دول مجلس التعاون الخليجي القيام بذلك تلقائيا ؟ هو أكثر وضوحا ارشادي (ترتيب المتغيرات من أكبر حجم الاحتياج إلى الأصغر) تفتقر في بعض الطريق ؟ هو بعض التعليمات البرمجية التي تعتمد على المادية طلب من البنيات (هل هذه فكرة جيدة)?

أنا أسأل فقط لأن دول مجلس التعاون الخليجي هو السوبر الأمثل في الكثير من الطرق ولكن ليس في هذا و أنا أفكر يجب أن يكون هناك بعض بارد نسبيا التفسير (الذي أنا غافلين).

هل كانت مفيدة؟

المحلول

دول مجلس التعاون الخليجي لا إعادة ترتيب عناصر البنية ، لأن ذلك من شأنه أن ينتهك C القياسية.القسم 6.7.2.1 من C99 مستوى الدول:

داخل بنية الكائن غير بت الميدانية أعضاء الوحدات التي بت المجالات يقيمون لها عناوين زيادة في الترتيب الذي يتم الإعلان عنها.

نصائح أخرى

البنيات وكثيرا ما يستخدم تمثيلات من التعبئة من أجل من تنسيقات الملفات الثنائية و بروتوكولات شبكة الاتصال.هذا من شأنه كسر إذا تم ذلك.وبالإضافة إلى ذلك, مختلفة القائمون على تحسين الأشياء بشكل مختلف و ربط مدونة معا من كلا سيكون من المستحيل.هذا ببساطة غير ممكن.

دول مجلس التعاون الخليجي هو أذكى منا في إنتاج آلة رمز من شفرة المصدر.إلا أنني رجفة إذا كان أذكى منا في إعادة ترتيب لدينا البنيات ، لأنه بيانات مثلايمكن أن تكون مكتوبة إلى ملف.البنية التي تبدأ مع 4 حرف ثم لديه 4 بايت عدد صحيح لن تكون مجدية إذا قرأت على نظام آخر حيث دول مجلس التعاون الخليجي قررت أنه يجب إعادة ترتيب البنية أعضاء.

دول مجلس التعاون الخليجي إس لديها هيكل التنظيم الأمثل (-fipa-البنية-reorg) ، ولكن ذلك يتطلب كاملة-برنامج تحليل و ليس قوي جدا في هذه اللحظة.

ج المجمعين لا تلقائيا حزمة البنيات على وجه التحديد بسبب المحاذاة قضايا مثل تذكر.يصل على كلمة حدود (32 بت على معظم وحدات المعالجة المركزية) تحمل عقوبة ثقيلة على x86 و يسبب الوفاة الفخاخ على RISC أبنية.

لا اقول انها فكرة جيدة, ولكن بالتأكيد يمكنك كتابة التعليمات البرمجية التي تعتمد على ترتيب أعضاء البنية.على سبيل المثال ، الإختراق, في كثير من الأحيان الناس يلقي مؤشر إلى البنية كنوع من حقل معين داخل التي يريدون الوصول إليها ، ثم استخدام مؤشر الحساب للوصول إلى هناك.بالنسبة لي هذا أمر خطير جدا الفكرة, لكنني رأيت أنها تستخدم خصوصا في C++ إلى قوة هذا المتغير تم إعلان خاص أن تكون متاحة عندما يكون في فئة من مكتبة 3rd الطرف و ليس علنا مغلفة.ترتيب أعضاء تماما كسر هذا.

قد ترغب في محاولة أحدث دول مجلس التعاون الخليجي الجذع أو البنية-reorg-فرع والتي هي قيد التطوير النشط.

https://gcc.gnu.org/wiki/cauldron2015?action=AttachFile&do=view&target=Olga+Golovanevsky_+Memory+Layout+Optimizations+of+Structures+and+Objects.pdf

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top