it-swarm-eu.dev

Co je to tabulka symbolů?

Může někdo popsat, co je tabulka symbolů v kontextu C a C++?

78
jdt141

Jsou zde dva společné a související význam tabulek symbolů.

Nejdříve je ve vašich souborech objektů tabulka symbolů. Obvykle kompilátor C nebo C++ kompiluje jeden zdrojový soubor do souboru objektu s příponou .obj nebo .o. Obsahuje kolekci spustitelného kódu a dat, které může linker zpracovat do pracovní aplikace nebo sdílené knihovny. Soubor objektu má v něm datovou strukturu nazvanou tabulku symbolů, která mapuje různé položky v souboru objektu na názvy, kterým může linker porozumět. Pokud zavoláte funkci z vašeho kódu, kompilátor do souboru objektu neuvede konečnou adresu rutiny. Místo toho vloží do kódu hodnotu zástupného symbolu a přidá poznámku, která říká linkerovi, aby vyhledal odkaz v různých tabulkách symbolů ze všech souborů objektů, které zpracovává, a umístí tam konečné umístění.

Za druhé, je zde také tabulka symbolů ve sdílené knihovně nebo DLL. To je vytvořeno linkerem a slouží k pojmenování všech funkcí a datových položek, které jsou viditelné pro uživatele knihovny. To umožňuje systému provádět propojování běhu a řešit otevřené odkazy na tyto názvy na místo, kde je knihovna načtena do paměti.

Pokud se chcete dozvědět více, doporučuji vynikající knihu Johna Levina "Linkers and Loaders" . link text

73
Ben Combee

Stručně řečeno, je to mapování jména, které přiřadíte proměnné jeho adrese v paměti, včetně metadat typu, rozsahu a velikosti. Používá jej kompilátor.

To je obecně, ne jen C [++] *. Technicky to není vždy přímá adresa paměti. Záleží na tom, jaký jazyk, platforma apod. Kompilátor cílí.

22
Steve Landey

V Linuxu můžete použít příkaz: 

nm [soubor objektu]

seznam tabulek symbolů tohoto objektového souboru.

13
hdn

Tabulka symbolů je seznam "symbolů" v programu/jednotce. Symboly jsou nejčastěji názvy proměnných nebo funkcí. Tabulka symbolů může být použita k určení, kde budou umístěny proměnné paměti nebo funkce.

8
Joe Schneider

Zaškrtněte položku Tabulka symbolů wikipedia.

4
Allan Wind

Tabulka symbolů je důležitá datová struktura vytvořená a udržovaná kompilátory za účelem ukládání informací o výskytu různých entit, jako jsou názvy proměnných, názvy funkcí, objekty, třídy, rozhraní atd.

0
rashedcs