ZHCUAU3J January 2018 – March 2024
使用 trampoline 的优点是可以将所有的调用都当成 near 调用,这种调用的速度更快且更高效。您只需修改无法到达的调用。此外,几乎不需要考虑相互调用的函数的相对位置。调用必须通过 trampoline 的情况比 near 调用少见。
虽然生成 far 调用 trampoline 提供了更直接的解决方案,但 trampoline 的缺点是比直接调用函数要慢一些。trampoline 需要调用和分支。此外,虽然内联代码可以根据调用环境进行定制,但 trampoline 是以更通用的方式生成的,其效率可能略低于内联代码。
如果某个调用无法到达其被调用函数,为该调用创建 trampoline 代码段的另一种方法是实际修改该调用的源代码。在某些情况下,可在不影响代码大小的情况下完成此过程。但是,一般来说,这种方法是极其困难的,尤其是当代码的大小受变换影响时。