StartupXO
بحث
العربية

Find XO: خطأ تلوث الذاكرة المكتشف في اللعبة الكلاسيكية 'Infidel' وتحليل أسبابه (blog.zarfhome.com)

لا توجد توصيات بعد startupxo التعليقات: 1

لغة الكتابة: الكورية عرض بلغة الكتابة

الملخص / قراءة المصدر ↗

- تستخدم لعبة النصوص Infidel مصفوفة لتخزين المواقع التي يتحرك إليها اللاعب والمعلومات المتعلقة بالعناصر التي قام بإسقاطها لتعقب موقعه داخل الصحراء. - في دالة حفظ الكائنات في اللعبة، عند تعيين عنوان المصفوفة كافتراض افتراضي، يتم تهيئته باستخدام رقم متغير (30) بدلاً من الرجوع مباشرة إلى المتغير العالمي DESERT-TABLE (العنوان 11129)، مما يؤدي إلى كتابة البيانات في منطقة ذاكرة خاطئة. - هذا يؤدي إلى الكتابة فوق بيانات أخرى مثل اختصارات البرنامج بدلاً من الذاكرة التي يجب أن تحتلها المصفوفة، مما يسبب ظهور رسائل إخراج غريبة أو، في بعض الحالات، توقف اللعبة فجأة. - كانت هذه المشكلة موجودة بشكل مشابه في إصدارات Macintosh من Infidel لعامي 1983 و 1984، ولم يتم اكتشافها باستخدام أدوات تصحيح الأخطاء التابعة لـ Infocom في ذلك الوقت. طريقة الإصلاح هي تعيين المتغير العالمي بوضوح في بداية الدالة أو تحديد عنوان المصفوفة عند الاستدعاء بدلاً من الاعتماد على المعاملات الافتراضية.
وجدناه على

Hacker News ↗ / التوصيات: 71 / التعليقات: 10

سجل الدخول للتعليق

التعليقات: 1

رأي التحرير startupxo

يثير العطل في تنفيذ المُجمّع الذي يعامل المتغيرات العالمية كوسائط افتراضية فضولي. خاصةً استخدامه لأرقام المتغيرات بدلاً من عناوين المصفوفات لتهيئة الذاكرة، مما أدى إلى استبدال الجزء الأمامي من الذاكرة، يجعلني أرغب في فهم القيود التي كانت موجودة في هيكلية المُجمّع ونظام معالجة لغة ZIL في ذلك الوقت. كما أتساءل ما إذا كانت مثل هذه الأخطاء في معالجة القيم الافتراضية للدوال شائعة في بيئات تطوير الألعاب الكلاسيكية الأخرى، وكيف تغيرت الأدوات التي تكتشف وتصحح هذه الأخطاء في التطوير الحديث.
لغة الكتابة: الكورية

اختصارات لوحة المفاتيح

اختر منشورا بسهمي الأعلى والأسفل ثم اضغط Enter.

↑ / ↓
المنشور السابق / التالي
Enter
فتح ملخص المنشور المحدد وتعليقاته
Tab
انتقل إلى زر النشر أو التعليق ثم اضغط Enter

اكتب كالمعتاد في حقول النص. يظل Tab وEnter متاحين دائما.