سؤال

هل يمكن لأي شخص أن يصف جدول الرموز في سياق C وC++؟

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

المحلول

هناك نوعان من المعاني الشائعة والمرتبطة بجداول الرموز هنا.

أولاً، يوجد جدول الرموز في ملفات الكائنات الخاصة بك.عادةً ما يقوم برنامج التحويل البرمجي لـ C أو C++ بترجمة ملف مصدر واحد إلى ملف كائن بامتداد .obj أو .o.يحتوي هذا على مجموعة من التعليمات البرمجية والبيانات القابلة للتنفيذ والتي يمكن للرابط معالجتها في تطبيق عمل أو مكتبة مشتركة.يحتوي ملف الكائن على بنية بيانات تسمى جدول الرموز الذي يقوم بتعيين العناصر المختلفة في ملف الكائن إلى أسماء يمكن للرابط فهمها.إذا قمت باستدعاء دالة من التعليمات البرمجية الخاصة بك، فإن المترجم لا يضع العنوان النهائي للروتين في ملف الكائن.بدلاً من ذلك، فإنه يضع قيمة عنصر نائب في التعليمات البرمجية ويضيف ملاحظة تخبر الرابط بالبحث عن المرجع في جداول الرموز المختلفة من جميع ملفات الكائنات التي يعالجها ويلصق الموقع النهائي هناك.

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

إذا كنت تريد معرفة المزيد، أقترح عليك كتاب جون ليفين الممتاز "Linkers and Loaders".نص الرابط

نصائح أخرى

باختصار، هو تعيين الاسم الذي تقوم بتعيين متغير لعنوانه في الذاكرة، بما في ذلك البيانات الوصفية مثل النوع والنطاق والحجم.يتم استخدامه من قبل المترجم.

هذا بشكل عام، وليس فقط C[++]*.من الناحية الفنية، لا يتضمن دائمًا عنوان الذاكرة المباشر.يعتمد ذلك على اللغة والمنصة وما إلى ذلك.يستهدف المترجم.

في Linux، يمكنك استخدام الأمر:

نانومتر [ملف كائن]

لسرد جدول الرموز لملف الكائن هذا.

جدول الرموز هو قائمة "الرموز" الموجودة في البرنامج/الوحدة.غالبًا ما تكون الرموز أسماء المتغيرات أو الوظائف.يمكن استخدام جدول الرموز لتحديد مكان وجود متغيرات أو وظائف في الذاكرة.

تفحص ال جدول الرموز دخول ويكيبيديا.

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

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