Pregunta

¿Alguien puede describir qué es una tabla de símbolos en el contexto de C y C++?

¿Fue útil?

Solución

Aquí hay dos significados comunes y relacionados de las tablas de símbolos.

Primero, está la tabla de símbolos en sus archivos de objetos.Por lo general, un compilador de C o C++ compila un único archivo fuente en un archivo objeto con una extensión .obj o .o.Contiene una colección de código ejecutable y datos que el vinculador puede procesar en una aplicación funcional o biblioteca compartida.El archivo objeto tiene una estructura de datos llamada tabla de símbolos que asigna los diferentes elementos del archivo objeto a nombres que el vinculador puede entender.Si llama a una función desde su código, el compilador no coloca la dirección final de la rutina en el archivo objeto.En su lugar, coloca un valor de marcador de posición en el código y agrega una nota que le indica al vinculador que busque la referencia en las distintas tablas de símbolos de todos los archivos objeto que está procesando y que coloque allí la ubicación final.

En segundo lugar, también está la tabla de símbolos en una biblioteca compartida o DLL.Esto lo produce el vinculador y sirve para nombrar todas las funciones y elementos de datos que son visibles para los usuarios de la biblioteca.Esto permite que el sistema realice enlaces en tiempo de ejecución, resolviendo referencias abiertas a esos nombres en la ubicación donde está cargada la biblioteca en la memoria.

Si desea obtener más información, le sugiero el excelente libro de John Levine "Linkers and Loaders".Texto del enlace

Otros consejos

Brevemente, es la asignación del nombre que asigna a una variable a su dirección en la memoria, incluidos metadatos como tipo, alcance y tamaño.Lo utiliza el compilador.

Eso es en general, no sólo C[++]*.Técnicamente, no siempre incluye la dirección de memoria directa.Depende del idioma, plataforma, etc.el compilador está apuntando.

En Linux, puedes usar el comando:

nm [archivo objeto]

para enumerar la tabla de símbolos de ese archivo objeto.

La tabla de símbolos es la lista de "símbolos" en un programa/unidad.Los símbolos suelen ser los nombres de variables o funciones.La tabla de símbolos se puede utilizar para determinar en qué parte de la memoria se ubicarán las variables o funciones.

Revisar la Tabla de símbolos entrada de wikipedia.

La tabla de símbolos es una estructura de datos importante creada y mantenida por los compiladores para almacenar información sobre la aparición de diversas entidades, como nombres de variables, nombres de funciones, objetos, clases, interfaces, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top