Pregunta ¿Qué es una tabla de símbolos?


¿Puede alguien describir qué es una tabla de símbolos dentro del contexto de C y C ++?


76
2017-09-16 03:14


origen


Respuestas:


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 C o C ++ compila un único archivo fuente en un archivo objeto con una extensión .obj o .o. Esto contiene una colección de código ejecutable y datos que el enlazador puede procesar en una aplicación en funcionamiento o una biblioteca compartida. El archivo objeto tiene una estructura de datos llamada tabla de símbolos que mapea los diferentes elementos en el archivo objeto con nombres que el vinculador puede comprender. Si llama a una función desde su código, el compilador no pone la dirección final de la rutina en el archivo del objeto. En su lugar, pone un valor de marcador en el código y agrega una nota que le dice al vinculador que busque la referencia en las diversas tablas de símbolos de todos los archivos de objeto que está procesando y pegue allí la ubicación final.

En segundo lugar, también está la tabla de símbolos en una biblioteca compartida o DLL. Esto es producido por el enlazador 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 un enlace en tiempo de ejecución, resolviendo las referencias abiertas a esos nombres en la ubicación donde se carga la biblioteca en la memoria.

Si desea obtener más información, le sugiero el excelente libro de John Levine "Enlazadores y cargadores".Texto del enlace


70
2017-09-16 03:28



En resumen, es la asignación del nombre que asigna una variable a su dirección en la memoria, incluidos los metadatos como el tipo, el alcance y el tamaño. Es utilizado por el compilador.

Eso es en general, no solo C [++] *. Técnicamente, no siempre incluye la dirección de memoria directa. Depende del idioma, la plataforma, etc. a los que apunta el compilador.


22
2017-09-16 03:16



En Linux, puedes usar el comando:

nm [archivo de objeto]

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


13
2017-07-28 16:44



La tabla de símbolos es la lista de "símbolos" en un programa / unidad. Los símbolos son a menudo los nombres de variables o funciones. La tabla de símbolos se puede usar para determinar dónde se ubicarán las variables de memoria o funciones.


8
2017-09-16 03:26



Revisar la Tabla de símbolos entrada de wikipedia


4
2017-09-16 03:17



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


0
2017-11-01 13:41