Que signifie « fixup vtable » signifie?
Question
Je l'ai entendu ce terme, "fixup vtable", utilisé. Qu'est-ce que ça veut dire? Je n'ai pas réussi demander à Google. Je sais déjà ce qu'est un vtable est donc qui n'a pas besoin d'être défini.
La solution
La réponse simple: Il est un hack pour permettre à un code généré par les différents compilateurs / langages coexistent. Il permet l'exécution de trouver l'emplacement des fonctions virtuelles sans connaître les détails de la mise en œuvre.
Autres conseils
Pour moi, Google a révélé que fixups vtable sont une caractéristique du format de fichier exécutable PE (Windows). Ils fournissent un moyen efficace de mettre en œuvre vtables (pour C ++ et d'autres langues), selon spec PE ECMA :
Certaines langues, qui choisissent de ne pas suivez l'exécution du système de type commun modèle, peut avoir des fonctions virtuelles qui doivent être représentés dans un v-table. Ces tables de V sont disposées par le compilateur, et non par le moteur d'exécution. Trouver l'emplacement correct v-table et appeler indirectement par la valeur tenue en ce que la fente est également effectuée par le compilateur. Le champ VtableFixups en l'en-tête d'exécution contient la emplacement et la taille d'un tableau de VTABLE (voir l'article Les corrections 14.5.1). tables en V doivent être émis en section du fichier PE en lecture-écriture.
Chaque entrée dans ce tableau décrit un réseau contigu de fentes v-table en la taille spécifiée. Chaque emplacement commence out initialisé au jeton de métadonnées valeur pour la méthode dont ils ont besoin pour appel. Au temps de chargement d'image, le moteur d'exécution Loader se transformera chaque entrée en pointeur vers le code machine pour la CPU et peut être appelé directement.