Pergunta

Alguém pode descrever o que é uma tabela de símbolos no contexto de C e C++?

Foi útil?

Solução

Existem dois significados comuns e relacionados de tabelas de símbolos aqui.

Primeiro, há a tabela de símbolos em seus arquivos de objetos.Normalmente, um compilador C ou C++ compila um único arquivo de origem em um arquivo objeto com extensão .obj ou .o.Contém uma coleção de código executável e dados que o vinculador pode processar em um aplicativo funcional ou biblioteca compartilhada.O arquivo objeto possui uma estrutura de dados chamada tabela de símbolos que mapeia os diferentes itens no arquivo objeto para nomes que o vinculador pode entender.Se você chamar uma função do seu código, o compilador não colocará o endereço final da rotina no arquivo objeto.Em vez disso, ele coloca um valor de espaço reservado no código e adiciona uma nota que diz ao vinculador para procurar a referência nas diversas tabelas de símbolos de todos os arquivos de objeto que está processando e fixar o local final lá.

Segundo, há também a tabela de símbolos em uma biblioteca compartilhada ou DLL.Isso é produzido pelo vinculador e serve para nomear todas as funções e itens de dados visíveis aos usuários da biblioteca.Isso permite que o sistema faça links em tempo de execução, resolvendo referências abertas a esses nomes para o local onde a biblioteca está carregada na memória.

Se você quiser saber mais, sugiro o excelente livro "Linkers and Loaders" de John Levine.Texto do link

Outras dicas

Resumidamente, é o mapeamento do nome que você atribui a uma variável ao seu endereço na memória, incluindo metadados como tipo, escopo e tamanho.É usado pelo compilador.

Em geral, isso não é apenas C[++]*.Tecnicamente, nem sempre inclui endereço de memória direto.Depende de qual idioma, plataforma, etc.o compilador está direcionando.

No Linux, você pode usar o comando:

nm [arquivo objeto]

para listar a tabela de símbolos desse arquivo objeto.

A tabela de símbolos é a lista de "símbolos" em um programa/unidade.Os símbolos são geralmente nomes de variáveis ​​​​ou funções.A tabela de símbolos pode ser usada para determinar onde as variáveis ​​ou funções da memória serão localizadas.

Confira a Tabela de Símbolos entrada da Wikipédia.

Tabela de símbolos é uma importante estrutura de dados criada e mantida por compiladores para armazenar informações sobre a ocorrência de diversas entidades, como nomes de variáveis, nomes de funções, objetos, classes, interfaces, etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top