Хтось може описати, що таке таблиця символів у контексті C та C ++?
Відповіді:
Тут є два загальні та пов’язані між собою значення таблиць символів.
По-перше, у ваших об’єктних файлах є таблиця символів. Зазвичай компілятор C або C ++ компілює один вихідний файл в об'єктний файл із розширенням .obj або .o. Він містить колекцію виконуваного коду та даних, які компонувальник може обробити в робочий додаток або спільну бібліотеку. Об’єктний файл має структуру даних, яка називається таблицею символів, яка відображає різні елементи у об’єктному файлі до імен, які компонент зв’язку може зрозуміти. Якщо ви викликаєте функцію з вашого коду, компілятор не вводить остаточну адресу підпрограми у файл об'єкта. Натомість він додає у код значення заповнювача та додає примітку, яка вказує лінкеру шукати посилання в різних таблицях символів з усіх оброблюваних файлів, які він обробляє, і фіксувати там кінцеве розташування.
По-друге, є також таблиця символів у спільній бібліотеці або DLL. Це створюється лінкером і служить для імені всіх функцій та елементів даних, які бачать користувачі бібліотеки. Це дозволяє системі виконувати підключення під час виконання, вирішуючи відкриті посилання на ці імена до місця, де бібліотека завантажується в пам'ять.
Якщо ви хочете дізнатись більше, я пропоную чудову книгу Джона Левіна "Посилання та навантажувачі". текст посилання
Коротко кажучи, це відображення імені, яке ви присвоюєте змінній її адресі в пам’яті, включаючи такі метадані, як тип, область застосування та розмір. Він використовується компілятором.
Це загалом, а не тільки C [++] *. Технічно це не завжди включає пряму адресу пам'яті. Це залежить від того, на яку мову, платформу тощо націлений компілятор.
У Linux ви можете використовувати команду:
nm [файл об'єкта]
для переліку таблиці символів цього об’єктного файлу. З цього роздруківки ви зможете потім розшифрувати використовувані символи лінкера з їхніх імен .
Таблиця символів - це список "символів" у програмі / блоці. Символи - це найчастіше імена змінних чи функцій. За допомогою таблиці символів можна визначити, де в пам'яті будуть розташовані змінні або функції.
Перегляньте запис у Вікіпедії таблиці символів .
Таблиця символів - це важлива структура даних, створена та підтримувана компіляторами для зберігання інформації про появу різних сутностей, таких як імена змінних, імена функцій, об'єкти, класи, інтерфейси тощо.