Что такое таблица символов?
-
09-06-2019 - |
Вопрос
Кто-нибудь может описать, что такое таблица символов в контексте C и C ++?
Решение
Здесь есть два общих и взаимосвязанных значения таблиц символов.
Во-первых, в ваших объектных файлах есть таблица символов.Обычно компилятор C или C++ компилирует один исходный файл в объектный файл с расширением .obj или .o.Он содержит набор исполняемого кода и данных, которые компоновщик может обработать в рабочее приложение или разделяемую библиотеку.Объектный файл содержит структуру данных, называемую таблицей символов, которая сопоставляет различные элементы объектного файла с именами, понятными компоновщику.Если вы вызываете функцию из своего кода, компилятор не помещает конечный адрес подпрограммы в объектный файл.Вместо этого он помещает в код значение-заполнитель и добавляет примечание, в котором компоновщику предлагается найти ссылку в различных таблицах символов из всех объектных файлов, которые он обрабатывает, и вставить туда конечное местоположение.
Во-вторых, есть также таблица символов в общей библиотеке или DLL.Это создается компоновщиком и служит для присвоения имен всем функциям и элементам данных, которые видны пользователям библиотеки.Это позволяет системе выполнять связывание во время выполнения, разрешая открытые ссылки на эти имена в месте, где библиотека загружена в память.
Если вы хотите узнать больше, я предлагаю превосходную книгу Джона Левина "Компоновщики и загрузчики".текст ссылки
Другие советы
Вкратце, это сопоставление имени, которое вы присваиваете переменной, с ее адресом в памяти, включая такие метаданные, как тип, область видимости и размер.Он используется компилятором.
Это вообще, а не только C[++]*.Технически, он не всегда включает прямой адрес памяти.Это зависит от того, какой язык, платформа и т.д.компилятор нацелен на поиск.
В Linux вы можете использовать command:
nm [объектный файл]
чтобы перечислить таблицу символов этого объектного файла.
Таблица символов - это список "символов" в программе /модуле.Символы чаще всего являются названиями переменных или функций.Таблица символов может быть использована для определения того, где в памяти будут располагаться переменные или функции.
Посмотрите на Таблица символов статья в Википедии.
Таблица символов - это важная структура данных, создаваемая и поддерживаемая компиляторами для хранения информации о встречаемости различных сущностей, таких как имена переменных, функций, объектов, классов, интерфейсов и т.д.