繁体   English   中英

是否有限制GCC和/或Clang的编译器设置?

[英]Is there a compiler (for GCC and/or Clang) setting that limits compiled function length?

对于我正在研究的程序,我想限制每个已编译函数的长度,以便在到达函数边界2所需的距离1上提供硬上限。 在GCC或Clang中(或者实际上是任何编译器框架/工具链)中是否有一个选项可以启用功能拆分来执行此操作? 还是有我不知道防止这种限制的限制?

1距离在此定义为小于功能的任何离散单位,即指令数,基本块数,乔恩·斯凯特(Jon Skeet)头3上的白发数量等。

2我将功能边界定义为“将新堆栈框架推入CPU堆栈的位置”。 据我了解,这几乎完全是在调用新函数时发生的(偶尔对于本身不调用其他函数的叶子函数除外)。

3这只是个玩笑。 我们都知道,乔恩·斯基特(Jon Skeet)的头发不会变白-只是垃圾收集,并且实例化了一根新头发,就像新头发一样。

我不知道有任何编译器开关,但是您不需要。 可以使用nm轻松获得文本段中符号的大小:

$ nm -AP a.out|awk '$3=="T" {print $2 " " $5}'
main 000000000000005b

请注意,这需要未压缩的可执行文件。 许多nm实现都提供了其他选项,例如用十进制数字代替十六进制,这使得比较数字变得更加容易。 将其转换为脚本以输出大于X的函数:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM