目录:
定义-Thunk是什么意思?
在一般的计算环境中,重排是一段由底层机器生成的代码,用于实现软件系统的细节。 它是以下之一:
- 一段执行延迟计算的代码
- 虚拟功能表实现的功能
- 机器数据从一种系统特定形式到另一种形式的映射,以解决兼容性问题
Techopedia解释了Thunk
重击的概念出现于1961年初。它是一种在执行时返回参数值的计算。 首次执行后,按需调用将按其返回值替换一个thunk。 绑定较晚的语言会在运行时根据thunk执行的计算进行查找。
函数式编程中的空函数(不带参数的函数)被称为thunk。 Thunks模拟惰性求值并延迟函数参数的计算。 这些功能进一步迫使重击获得实际值。 在高阶编程中常量函数的实现中,Thunk也会自然出现。
面向对象语言(例如C ++)的编译器生成称为thunk的函数。 它们在存在虚拟或多重继承的情况下优化虚拟函数调用。
可重定位代码的某些实例使用本地thunk来调用库函数。 代码中的动态库调用会跳转到跳转表中的thunk中,该表将进一步由加载适用库或移至已加载库中适当位置的函数所取代。 因此,该区域中的thunk会计算或返回先前计算和缓存的值。 thunk用于基于软件的虚拟内存系统中,以执行从虚拟地址到物理地址的映射。 在32位操作系统中创建16位虚拟DOS机器称为thunk,可以确保与使用旧系统调用的应用程序向后兼容。
扁平thunk使用thunk将调用从32位代码转换为16位代码。 中间代码在平台之间转换内存地址。 微软本身有一个称为Win32s的thunk层,它允许32位Windows应用程序在16位Windows上运行。 64位Windows版本还提供了一个转换层WoW64,该层允许使用32位Windows应用程序。