<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2</id>
	<title>Таблица символов - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2"/>
	<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2&amp;action=history"/>
	<updated>2026-05-05T03:24:49Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2&amp;diff=4608&amp;oldid=prev</id>
		<title>Patarakin в 09:24, 19 октября 2022</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2&amp;diff=4608&amp;oldid=prev"/>
		<updated>2022-10-19T09:24:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://digida.mgpu.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2&amp;amp;diff=4608&amp;amp;oldid=4545&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Patarakin</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2&amp;diff=4545&amp;oldid=prev</id>
		<title>Patarakin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2&amp;diff=4545&amp;oldid=prev"/>
		<updated>2022-10-19T07:30:51Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 10:30, 19 октября 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Patarakin</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2&amp;diff=4544&amp;oldid=prev</id>
		<title>ru_wikipedia&gt;InternetArchiveBot: Спасено источников — 1, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.8.9</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2&amp;diff=4544&amp;oldid=prev"/>
		<updated>2022-08-13T11:32:40Z</updated>

		<summary type="html">&lt;p&gt;Спасено источников — 1, отмечено мёртвыми — 0. &lt;a href=&quot;/index.php?title=En:User_talk:InternetArchiveBot&amp;amp;action=formedit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;En:User talk:InternetArchiveBot (страница не существует)&quot;&gt;Сообщить об ошибке&lt;/a&gt;. См. &lt;a href=&quot;/index.php?title=M:InternetArchiveBot/FAQ/ru&amp;amp;action=formedit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;M:InternetArchiveBot/FAQ/ru (страница не существует)&quot;&gt;FAQ&lt;/a&gt;.) #IABot (v2.0.8.9&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{нет источников|date=July 2013}}&lt;br /&gt;
{{не путать|Набор символов|набором символов|таблицей, задающей кодировку символов алфавита}}&lt;br /&gt;
{{о|информации о функциях и переменных в объектных файлах|стандартной программе Windows|Таблица символов (Windows)|об1=1}}&lt;br /&gt;
В [[информатика|информатике]] &amp;#039;&amp;#039;&amp;#039;таблица символов&amp;#039;&amp;#039;&amp;#039; (от {{lang-en|symbol table}} «таблица идентификаторов») — это [[структура данных]], используемая [[транслятор]]ом ([[компилятор]]ом или [[интерпретатор]]ом), в которой каждый идентификатор переменной или функции из [[исходный код|исходного кода]] ассоциируется с информацией, связанной с его объявлением или появлением в коде: [[Тип данных|типом данных]], [[Область видимости|областью видимости]] и в некоторых случаях [[Адрес (информатика)|местом в памяти]] ([[Смещение (адресация)|смещением]]).&lt;br /&gt;
&lt;br /&gt;
== Реализация ==&lt;br /&gt;
Общеиспользуемой реализацией является [[хеш-таблица]]. Компилятор может как использовать единую таблицу для символов, так и разделять символы на несколько иерархических таблиц по разным [[область видимости|областям видимости]]. Бывают также реализации в виде деревьев, линейных и самоорганизовываемых списков.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
[[Объектный модуль]] (англ. object file) содержит таблицу символов для внешне видимых (публичных) идентификаторов. При связывании ([[Компоновщик|линковке]]) разных объектных модулей [[компоновщик]] использует таблицы символов для разрешения межмодульных упоминаний.&lt;br /&gt;
&lt;br /&gt;
Таблица символов может существовать лишь на протяжении трансляции, но иногда она вкладывается в вывод этого процесса&amp;lt;!--NOTE: не разложено, не объяснено, как в источнике; разъяснить и перевести обратно в англовики--&amp;gt; для дальнейшего использования, например, во время интерактивной [[отладка программы|отладки]], или как источник для форматирования диагностического отчета во время или после исполнения программы.&lt;br /&gt;
&lt;br /&gt;
Во время [[обратная разработка|реверс-инжиниринга]] многие утилиты с помощью таблицы проверяют, каким адресам принадлежат глобальные переменные и известные функции. Если таблица символов была убрана из объектных модулей до линковки (например, с помощью strip из [[GNU binary utilities|GNU binutils]]), утилитам будет сложнее определить адреса важных мест программы и проанализировать её.&lt;br /&gt;
&lt;br /&gt;
При доступе к переменным и [[Динамическое распределение памяти|динамическом распределении памяти]] компилятор должен осуществить множество работ, отсюда — расширенной модели стека при динамическом распределении необходима таблица символов.{{Clarify|date=July 2013}}&lt;br /&gt;
&lt;br /&gt;
Хорошим примером использования таблицы символов могут послужить модульные [[ядро операционной системы|ядра ОС]] [[UNIX-подобная операционная система|семейства Unix]]: таблица символов может использоваться подгружаемыми модулями ядра (например, драйверами) для доступа к неким символам. Однако это не является обязательным, если модуль не обращается к ядру, не использует внутренние функции, переменные, и т. д.&amp;lt;ref&amp;gt;{{книга&lt;br /&gt;
 |автор               = Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman&lt;br /&gt;
 |часть               = Гл. 2: Сборка и запуск модулей; Символьная таблица ядра&lt;br /&gt;
 |заглавие         = Linux Device Drivers, Third Edition&lt;br /&gt;
 |издательство = O&amp;#039;Reilly Media&lt;br /&gt;
 |ссылка             = http://dmilvdv.narod.ru/Translate/LDD3/index.html?ldd_kernel_symbol_table.html&lt;br /&gt;
 |год                   = 2005&lt;br /&gt;
 |isbn                     = 0-596-00590-3&lt;br /&gt;
}} {{Wayback|url=http://dmilvdv.narod.ru/Translate/LDD3/index.html?ldd_kernel_symbol_table.html |date=20140328215511 }}&amp;lt;/ref&amp;gt; Возможно обойтись без таблицы символов и обращаться к памяти внутри ядра напрямую, но в этом случае будет потеряна переносимость модулей, так как при разных конфигурациях ядра одинаковый код будет размещён в разных местах.{{Нет АИ|8|7|2013}}&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
Снизу приведена таблица символов небольшой программы. Для её создания использовалась утилита [[nm (Unix)|nm]] из комплекта [[GNU binary utilities|GNU binutils]]. В таблице размечен один символ данных (отмечен как тип «D») и множество функций (как из стандартной библиотеки, так и принадлежащие самой программе). Первая колонка содержит адрес смещения в памяти, вторая — [http://sourceware.org/binutils/docs-2.17/binutils/nm.html#nm тип символа], третья — его название.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+Пример таблицы&lt;br /&gt;
|-&lt;br /&gt;
! Адрес !! Тип !! Имя&lt;br /&gt;
|-&lt;br /&gt;
|00000020 || a || T_BIT&lt;br /&gt;
|-&lt;br /&gt;
|00000040 || a || F_BIT&lt;br /&gt;
|-&lt;br /&gt;
|00000080 || a || I_BIT&lt;br /&gt;
|-&lt;br /&gt;
|20000004 || t || irqvec&lt;br /&gt;
|-&lt;br /&gt;
|20000008 || t || fiqvec&lt;br /&gt;
|-&lt;br /&gt;
|2000000c || t || InitReset&lt;br /&gt;
|-&lt;br /&gt;
|20000018 || T || _main&lt;br /&gt;
|-&lt;br /&gt;
|20000024 || t || End&lt;br /&gt;
|-&lt;br /&gt;
|20000030 || T || AT91F_US3_CfgPIO_useB&lt;br /&gt;
|-&lt;br /&gt;
|2000005c || t || AT91F_PIO_CfgPeriph&lt;br /&gt;
|-&lt;br /&gt;
|200000b0 || T || main&lt;br /&gt;
|-&lt;br /&gt;
|20000120 || T || AT91F_DBGU_Printk&lt;br /&gt;
|-&lt;br /&gt;
|20000190 || t || AT91F_US_TxReady&lt;br /&gt;
|-&lt;br /&gt;
|200001c0 || t || AT91F_US_PutChar&lt;br /&gt;
|-&lt;br /&gt;
|200001f8 || T || AT91F_SpuriousHandler&lt;br /&gt;
|-&lt;br /&gt;
|20000214 || T || AT91F_DataAbort&lt;br /&gt;
|-&lt;br /&gt;
|20000230 || T || AT91F_FetchAbort&lt;br /&gt;
|-&lt;br /&gt;
|2000024c || T || AT91F_Undef&lt;br /&gt;
|-&lt;br /&gt;
|20000268 || T || AT91F_UndefHandler&lt;br /&gt;
|-&lt;br /&gt;
|20000284 || T || AT91F_LowLevelInit&lt;br /&gt;
|-&lt;br /&gt;
|200002e0 || t || AT91F_DBGU_CfgPIO&lt;br /&gt;
|-&lt;br /&gt;
|2000030c || t || AT91F_PIO_CfgPeriph&lt;br /&gt;
|-&lt;br /&gt;
|20000360 || t || AT91F_US_Configure&lt;br /&gt;
|-&lt;br /&gt;
|200003dc || t || AT91F_US_SetBaudrate&lt;br /&gt;
|-&lt;br /&gt;
|2000041c || t || AT91F_US_Baudrate&lt;br /&gt;
|-&lt;br /&gt;
|200004ec || t || AT91F_US_SetTimeguard&lt;br /&gt;
|-&lt;br /&gt;
|2000051c || t || AT91F_PDC_Open&lt;br /&gt;
|-&lt;br /&gt;
|2000059c || t || AT91F_PDC_DisableRx&lt;br /&gt;
|-&lt;br /&gt;
|200005c8 || t || AT91F_PDC_DisableTx&lt;br /&gt;
|-&lt;br /&gt;
|200005f4 || t || AT91F_PDC_SetNextTx&lt;br /&gt;
|-&lt;br /&gt;
|20000638 || t || AT91F_PDC_SetNextRx&lt;br /&gt;
|-&lt;br /&gt;
|2000067c || t || AT91F_PDC_SetTx&lt;br /&gt;
|-&lt;br /&gt;
|200006c0 || t || AT91F_PDC_SetRx&lt;br /&gt;
|-&lt;br /&gt;
|20000704 || t || AT91F_PDC_EnableRx&lt;br /&gt;
|-&lt;br /&gt;
|20000730 || t || AT91F_PDC_EnableTx&lt;br /&gt;
|-&lt;br /&gt;
|2000075c || t || AT91F_US_EnableTx&lt;br /&gt;
|-&lt;br /&gt;
|20000788 || T || __aeabi_uidiv&lt;br /&gt;
|-&lt;br /&gt;
|20000788 || T || __udivsi3&lt;br /&gt;
|-&lt;br /&gt;
|20000884 || T || __aeabi_uidivmod&lt;br /&gt;
|-&lt;br /&gt;
|2000089c || T || __aeabi_idiv0&lt;br /&gt;
|-&lt;br /&gt;
|2000089c || T || __aeabi_ldiv0&lt;br /&gt;
|-&lt;br /&gt;
|2000089c || T || __div0&lt;br /&gt;
|-&lt;br /&gt;
|200009a0 || D || _data&lt;br /&gt;
|-&lt;br /&gt;
|200009a0 || A || _etext&lt;br /&gt;
|-&lt;br /&gt;
|200009a0 || D || holaamigosh&lt;br /&gt;
|-&lt;br /&gt;
|200009a4 || A || __bss_end__&lt;br /&gt;
|-&lt;br /&gt;
|200009a4 || A || __bss_start&lt;br /&gt;
|-&lt;br /&gt;
|200009a4 || A || __bss_start__&lt;br /&gt;
|-&lt;br /&gt;
|200009a4 || A || _edata&lt;br /&gt;
|-&lt;br /&gt;
|200009a4 || A || _end&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Отладочные символы]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
{{примечания}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структуры данных]]&lt;br /&gt;
[[Категория:Теория компиляторов]]&lt;/div&gt;</summary>
		<author><name>ru_wikipedia&gt;InternetArchiveBot</name></author>
	</entry>
</feed>