我听过这个术语,"vtable fixup",用过.这是什么意思?我没有成功问谷歌.我已经知道vtable是什么,所以不需要定义.
对我来说,谷歌透露,vtable fixups是PE(Windows)可执行文件格式的一个特殊功能.根据ECMA的PE规范,它们提供了一种实现vtable(用于C++和其他语言)的有效方法:
某些选择不遵循通用类型系统运行时模型的语言可能具有需要在v表中表示的虚函数.这些v表由编译器布局,而不是由运行时布局.查找正确的v表槽并通过该槽中保存的值间接调用也由编译器完成.运行时头中的VtableFixups字段包含Vtable Fixup数组的位置和大小(请参见第14.5.1节).V表应发送到PE文件的读写部分.
此数组中的每个条目都描述了指定大小的连续v-table插槽数组.每个插槽开始初始化为他们需要调用的方法的元数据标记值.在图像加载时,运行时Loader会将每个条目转换为指向CPU机器代码的指针,并且可以直接调用.