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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top