Вопрос

Кто-нибудь может описать, что такое таблица символов в контексте C и C ++?

Это было полезно?

Решение

Здесь есть два общих и взаимосвязанных значения таблиц символов.

Во-первых, в ваших объектных файлах есть таблица символов.Обычно компилятор C или C++ компилирует один исходный файл в объектный файл с расширением .obj или .o.Он содержит набор исполняемого кода и данных, которые компоновщик может обработать в рабочее приложение или разделяемую библиотеку.Объектный файл содержит структуру данных, называемую таблицей символов, которая сопоставляет различные элементы объектного файла с именами, понятными компоновщику.Если вы вызываете функцию из своего кода, компилятор не помещает конечный адрес подпрограммы в объектный файл.Вместо этого он помещает в код значение-заполнитель и добавляет примечание, в котором компоновщику предлагается найти ссылку в различных таблицах символов из всех объектных файлов, которые он обрабатывает, и вставить туда конечное местоположение.

Во-вторых, есть также таблица символов в общей библиотеке или DLL.Это создается компоновщиком и служит для присвоения имен всем функциям и элементам данных, которые видны пользователям библиотеки.Это позволяет системе выполнять связывание во время выполнения, разрешая открытые ссылки на эти имена в месте, где библиотека загружена в память.

Если вы хотите узнать больше, я предлагаю превосходную книгу Джона Левина "Компоновщики и загрузчики".текст ссылки

Другие советы

Вкратце, это сопоставление имени, которое вы присваиваете переменной, с ее адресом в памяти, включая такие метаданные, как тип, область видимости и размер.Он используется компилятором.

Это вообще, а не только C[++]*.Технически, он не всегда включает прямой адрес памяти.Это зависит от того, какой язык, платформа и т.д.компилятор нацелен на поиск.

В Linux вы можете использовать command:

nm [объектный файл]

чтобы перечислить таблицу символов этого объектного файла.

Таблица символов - это список "символов" в программе /модуле.Символы чаще всего являются названиями переменных или функций.Таблица символов может быть использована для определения того, где в памяти будут располагаться переменные или функции.

Посмотрите на Таблица символов статья в Википедии.

Таблица символов - это важная структура данных, создаваемая и поддерживаемая компиляторами для хранения информации о встречаемости различных сущностей, таких как имена переменных, функций, объектов, классов, интерфейсов и т.д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top