Pregunta

He oído este término, "corrección vtable", que se utiliza. Qué significa eso? No tenía éxito pidiendo Google. Ya sé lo que es un vtable es por lo que no tiene que ser definido.

¿Fue útil?

Solución

La respuesta simple: Es un truco para permitir que el código generado por los compiladores diferentes idiomas / coexistir. Permite que el tiempo de ejecución para encontrar la ubicación de las funciones virtuales sin conocer los detalles de la aplicación.

Otros consejos

Para mí, Google reveló que fixups vtable son una característica especial del formato de archivo ejecutable PE (Windows). Ellos proporcionan una forma eficaz de poner en práctica vtables (para C ++ y otros lenguajes), de acuerdo con de ECMA PE especificación :

  

Algunos idiomas, que no eligen   seguir el tiempo del sistema tipo común   modelo, puede tener funciones virtuales   que necesitan ser representados en una   v-mesa. Estos v-mesas están dispuestas   por el compilador, no por el tiempo de ejecución.   Encontrar la ranura tabla v correcta y   llamando indirectamente a través del valor   celebrada en esa ranura también se hace por el   compilador. El campo en VtableFixups   la cabecera contiene el tiempo de ejecución   ubicación y el tamaño de una matriz de   Fixups VTABLE (véase la cláusula 14.5.1).   V-mesas deberán ser emitidos en una   lectura y escritura sección del archivo PE.

     

Cada entrada en esta matriz describe una   array contiguo de ranuras v-mesa de   el tamaño especificado. Cada ranura comienza   inicializado a cabo a la ficha de metadatos   valor para el método que necesitan para   llamada. En el tiempo de carga de imágenes, el tiempo de ejecución   Cargador a su vez, cada entrada en una   puntero a código de máquina para la CPU   y puede ser llamado directamente.

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