对于我正在研究的程序,我想限制每个编译函数的长度,以便为达到函数所需的距离 1 提供一个硬上限边界 2 。 GCC或Clang(或任何编译器框架/工具链)中是否有一个选项可以实现功能分割?还是有限制,我不知道阻止这个?
1 此处的距离定义为小于函数的任何离散单位 - 即指令数,基本块数,Jon Skeet头上的白发数 3 等等。
2 我将函数边界定义为“将新堆栈帧推入CPU堆栈的位置”。根据我的理解,这几乎只在调用一个新函数时发生(除了偶尔用于本身不调用其他函数的叶函数)。
3 这只是个玩笑。我们都知道,Jon Skeet的头发并没有变成灰色 - 它只是垃圾收集而且新的头发被实例化,好像新的一样。