প্রতীক টেবিল কি?


87

সি এবং সি ++ এর প্রসঙ্গে কোন প্রতীক টেবিলটি কী কেউ বর্ণনা করতে পারে?

উত্তর:


81

প্রতীক টেবিলের দুটি সাধারণ এবং সম্পর্কিত অর্থ রয়েছে।

প্রথমত, আপনার অবজেক্ট ফাইলগুলিতে প্রতীক টেবিল রয়েছে। সাধারণত, একটি সি বা সি ++ সংকলক একটি .obj বা .o এক্সটেনশন সহ কোনও অবজেক্ট ফাইলে একটি একক উত্স ফাইলকে সংকলন করে। এতে এক্সিকিউটেবল কোড এবং ডেটা সংগ্রহ রয়েছে যা লিঙ্কার একটি কার্যকরী অ্যাপ্লিকেশন বা ভাগ করা লাইব্রেরিতে প্রসেস করতে পারে। অবজেক্ট ফাইলে একটি ডেটা স্ট্রাকচার রয়েছে যার মধ্যে একটি সিম্বল টেবিল রয়েছে যা লিঙ্কার বুঝতে পারে এমন নামগুলিতে অবজেক্ট ফাইলে থাকা বিভিন্ন আইটেমকে ম্যাপ করে। আপনি যদি আপনার কোড থেকে কোনও ফাংশন কল করেন তবে সংকলকটি বস্তুর ফাইলে রুটিনের চূড়ান্ত ঠিকানা রাখবে না। পরিবর্তে, এটি কোডের মধ্যে একটি স্থানধারকের মান রাখে এবং একটি নোট যুক্ত করে যা লিঙ্কারকে তার সমস্ত প্রক্রিয়া ফাইল থেকে বিভিন্ন প্রতীক টেবিলের রেফারেন্সটি দেখতে এবং সেখানে চূড়ান্ত অবস্থানটি আটকে রাখতে বলে।

দ্বিতীয়ত, একটি ভাগ করা লাইব্রেরি বা ডিএলএলে প্রতীক টেবিলটিও রয়েছে। এটি লিঙ্কার দ্বারা উত্পাদিত হয় এবং গ্রন্থাগারের ব্যবহারকারীদের জন্য দৃশ্যমান সমস্ত ফাংশন এবং ডেটা আইটেমের নাম সরবরাহ করে। এটি সিস্টেমে রান-টাইম লিঙ্কিং করতে, লাইব্রেরিতে স্মৃতিতে লোড হওয়া সেই জায়গাতে সেই নামগুলির ওপেন রেফারেন্সগুলি সমাধান করে।

আপনি যদি আরও শিখতে চান তবে আমি জন লেভিনের দুর্দান্ত বই "লিঙ্কারস এবং লোডারস" পরামর্শ দিই। লিঙ্ক পাঠ্য


হাই বেন, দ্বিতীয় ক্ষেত্রে, আপনি কি রফতানি টেবিলের কথা উল্লেখ করছেন? অর্থাত, রফতানি টেবিলটি কি প্রতীক টেবিলের একটি বিশেষ মামলা? নাকি এই সম্পর্কহীন ধারণা?
পোভেন

ওহে. আমি বিশ্বাস করি এটি কোনও অবজেক্ট ফাইলে নেই তবে সেগুলি থেকে উল্লেখ করা হয়েছে। দ্বিতীয়ত, আপনি "চূড়ান্ত অবস্থান" বলতে কী বোঝাতে চেয়েছিলেন দয়া করে আরও কিছু ব্যাখ্যা করতে পারেন? উত্স কোডে শারীরিক ঠিকানা বা চূড়ান্তভাবে আপেক্ষিক ঠিকানা।
অষ্টম

26

সংক্ষেপে, এটি নামের ম্যাপিং যা আপনি মেমোরিতে তার ঠিকানায় একটি পরিবর্তনশীল নির্ধারণ করেন, যেমন মেটাডেটা যেমন টাইপ, স্কোপ এবং আকার। এটি সংকলক ব্যবহার করে।

এটি সাধারণভাবে, কেবল সি [++] * নয়। প্রযুক্তিগতভাবে, এটি সর্বদা সরাসরি মেমরি ঠিকানা অন্তর্ভুক্ত করে না। এটি কোন ভাষা, প্ল্যাটফর্ম ইত্যাদির উপর নির্ভর করে সংকলকটি লক্ষ্য করছে।


আমি মনে করি, "এটি সর্বদা সরাসরি মেমরি ঠিকানা অন্তর্ভুক্ত করে না" বলে এই ঠিকানাটির বিষয়বস্তু উল্লেখ করা আপনার পক্ষে খুব গুরুত্বপূর্ণ ছিল।
stdout

13

লিনাক্সে, আপনি কমান্ডটি ব্যবহার করতে পারেন:

এনএম [অবজেক্ট ফাইল]

যে অবজেক্ট ফাইল প্রতীক টেবিল তালিকা। এই প্রিন্টআউট থেকে, আপনি তাদের ব্যবহার করা নামগুলি থেকে ব্যবহারের মধ্যে লিংক প্রতীকগুলি বোঝাতে পারেন ।


8

প্রতীক টেবিলটি একটি প্রোগ্রাম / ইউনিটে "প্রতীক" এর তালিকা। প্রতীকগুলি প্রায়শই ভেরিয়েবল বা ফাংশনের নাম। মেমোরি ভেরিয়েবল বা ফাংশনগুলি কোথায় অবস্থিত হবে তা নির্ধারণ করতে প্রতীক টেবিলটি ব্যবহার করা যেতে পারে।



0

পরিবর্তনশীল নাম, ফাংশন নাম, অবজেক্টস, ক্লাস, ইন্টারফেস ইত্যাদির মতো বিভিন্ন সত্তার উপস্থিতি সম্পর্কে তথ্য সঞ্চয় করার জন্য সিম্বল টেবিল একটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার যা সংকলকরা তৈরি করে এবং রক্ষণাবেক্ষণ করে is


লিঙ্কার এবং সমাবেশকারীরা প্রতীক টেবিলগুলিও পরিচালনা করে (প্রায়শই সংকলকগুলির চেয়ে সহজ)।
বেসাইল স্টারিনকিভিচ 14
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.