シンボルテーブルとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > シンボルテーブルの意味・解説 

シンボルテーブル

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/07/01 10:00 UTC 版)

シンボルテーブル: Symbol table)は、コンパイラインタプリタなどのようなコンピュータプログラミング言語処理系などのようなプログラムで使われるデータ構造であり、プログラムのソースコード内の変数名などといった名前(シンボル)と、それぞれの内容(データ型スコープレベル、位置など)となるデータなどといった、「名前」→「中身」というような情報のテーブルである。

実装

典型的な実装としては、ハッシュテーブルを使った実装がある。コンパイラやインタプリタやその他の処理系は、1つの大きなシンボルテーブルで全てを扱う場合と、名前空間毎に分割されたシンボルテーブルを使う場合がある。前者の場合は、なんらかの方法で別々の名前空間にある同じ名前が衝突しないようにしなければならない。後者の場合は、名前空間が階層構造になっている場合にはその階層構造に対応した階層構造になっていることもあれば、なっていないこともある。

利用

オブジェクトファイルには、外部から見える識別子についてのシンボルテーブルが含まれていることが多い。複数のオブジェクトファイルをリンケージエディタでリンクする場合、未解決の参照を解決するのにシンボルテーブルを利用する。

シンボルテーブルは変換過程でのみ存在する場合もあるし、最終的な出力に組み込まれる場合もある。後者の場合、例えば、対話型デバッガによるデバッグや、性能解析ツールなどによる実行時の性能情報の収集などでシンボルテーブルが利用される。

以下の表は、GNU Binutilsnm コマンドで小さなプログラムのシンボルテーブルを表示させたときの内容を示したものである。データ(グローバル変数、"D" と表示される)としては holaamigosh だけがあり、他には多数の関数(プログラム内で定義されているものもあれば、標準ライブラリからリンクされたものもある)がある。最初のカラムはシンボルのメモリ上の位置、2番目のカラムはシンボルの型、3番目のカラムはシンボルの名前である。適当な引数を与えれば、シンボルテーブルはアドレス順にソートされて表示される。

シンボルテーブルの例
アドレス 名前
00000020 a T_BIT
00000040 a F_BIT
00000080 a I_BIT
20000004 t irqvec
20000008 t fiqvec
2000000c t InitReset
20000018 T _main
20000024 t End
20000030 T AT91F_US3_CfgPIO_useB
2000005c t AT91F_PIO_CfgPeriph
200000b0 T main
20000120 T AT91F_DBGU_Printk
20000190 t AT91F_US_TxReady
200001c0 t AT91F_US_PutChar
200001f8 T AT91F_SpuriousHandler
20000214 T AT91F_DataAbort
20000230 T AT91F_FetchAbort
2000024c T AT91F_Undef
20000268 T AT91F_UndefHandler
20000284 T AT91F_LowLevelInit
200002e0 t AT91F_DBGU_CfgPIO
2000030c t AT91F_PIO_CfgPeriph
20000360 t AT91F_US_Configure
200003dc t AT91F_US_SetBaudrate
2000041c t AT91F_US_Baudrate
200004ec t AT91F_US_SetTimeguard
2000051c t AT91F_PDC_Open
2000059c t AT91F_PDC_DisableRx
200005c8 t AT91F_PDC_DisableTx
200005f4 t AT91F_PDC_SetNextTx
20000638 t AT91F_PDC_SetNextRx
2000067c t AT91F_PDC_SetTx
200006c0 t AT91F_PDC_SetRx
20000704 t AT91F_PDC_EnableRx
20000730 t AT91F_PDC_EnableTx
2000075c t AT91F_US_EnableTx
20000788 T __aeabi_uidiv
20000788 T __udivsi3
20000884 T __aeabi_uidivmod
2000089c T __aeabi_idiv0
2000089c T __aeabi_ldiv0
2000089c T __div0
200009a0 D _data
200009a0 A _etext
200009a0 D holaamigosh
200009a4 A __bss_end__
200009a4 A __bss_start
200009a4 A __bss_start__
200009a4 A _edata
200009a4 A _end

脚注

関連項目

外部リンク


シンボルテーブル

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/13 05:40 UTC 版)

「シンボル」記事における「シンボルテーブル」の解説

「シンボルテーブル」を参照 ここでは「シンボル」とは、データ含まれるひとかたまり記号や、プログラミング用いられる「名前」のことであり、その名前から実体データを得るデータ構造をシンボルテーブルと言う例えコンパイラソースコードからオブジェクトコード生成する際、関数であればその「実体」を構成する一連の機械語命令列(「コード片」などとも言う)だけでなく、その関数関数名からそれを指す「シンボル」を、シンボルテーブルに追加するビルドプロセスでは、コンパイル次のリンクの段階で、リンカ複数モジュールからそれぞれのシンボルテーブルを参照し実行ファイルライブラリのリンクを解決する近年コンパイラ複雑な方法用いてシンボル生成することに関して名前修飾参照されたい。

※この「シンボルテーブル」の解説は、「シンボル」の解説の一部です。
「シンボルテーブル」を含む「シンボル」の記事については、「シンボル」の概要を参照ください。

ウィキペディア小見出し辞書の「シンボルテーブル」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「シンボルテーブル」の関連用語

シンボルテーブルのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



シンボルテーブルのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのシンボルテーブル (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのシンボル (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS