Таблица символов
-
Определение и использование таблицы символов
- Таблица символов связывает идентификаторы, константы, процедуры и функции с информацией о их объявлении или использовании.
- Она может быть частью памяти во время перевода или встроенной в выходные данные.
- Используется для отладки, форматирования отчетов и других целей.
-
Структура и содержимое таблицы символов
- Минимально содержит название символа и его адрес.
- Для платформ с перемещаемостью включает атрибуты перемещаемости.
- Для языков высокого уровня может содержать тип, размер и границы символа.
- Информация о перекрестных ссылках часто хранится вместе с таблицей символов.
-
Реализация и доступ к таблице символов
- Существует множество структур данных для реализации таблиц символов.
- Доступ к таблице осуществляется на разных этапах компилятора.
- Компиляторы могут использовать одну таблицу для всех символов или иерархические таблицы для разных областей.
-
Применение таблиц символов
- Объектные файлы содержат таблицы символов для идентификаторов, видимых извне.
- Компоновщик связывает внешние символы с объектными файлами.
- Инструменты обратного проектирования используют таблицу символов для определения адресов глобальных переменных и функций.
-
Примеры таблиц символов
- Приведены примеры таблиц символов для C, SysV ABI и Python.
- Обсуждаются динамические таблицы символов в Racket, LISP, Scheme и Prolog.
-
Рекомендации
- Упомянуты дополнительные ресурсы и библиография.
Полный текст статьи: