【发布时间】:2019-11-01 17:56:04
【问题描述】:
我正在尝试向 C 源代码添加检测/分析调用。我发现的许多编译器都有允许您执行此操作的标志(--gnu_instrument、-finsturment-functions 等)。然后为插入的函数调用提供定义。从那里,您可以使用生成的调用图以及您决定从分析调用中提取的任何指标来做一些很酷的事情。
不过,我需要检测使用 ADS 1.2 编译的代码
(源码是用\ARM\ADSv1_2\Bin\armcc.exe构建的)
说实话,这个编译器对我来说已经很老了,而且我很难找到很多有用的信息。我真正想要的只是要检查的编译器选项的完整列表,但我一定错过了它。 (就选项而言,链接的文档感觉不完整)
我确实偶然发现使用 -instrument 作为选项,虽然没有给出错误(当明显错误的标志出现时,-asdf),但在使用 -S 时对生成的程序集没有影响。但我无法在任何文档或帮助菜单中找到 -instrument,所以我可能只是使用不正确。或者我想它可能是一个被删除但仍然可以让你编译没有错误的功能,我真的不知道。
如果有人对此编译器有经验,或者只是一个更好的 Google-er,我们将不胜感激
【问题讨论】:
-
“这个编译器感觉很老”,这绝对是 - IIRC ADS 1.2 发布于 2001 年
-
我相信它不用于新项目,但不幸的是,它对它的依赖太多,而从它(我工作的地方)切换旧项目的理由太少了
-
ads 1.2 产生了比 gcc 更紧凑的代码,而 gcc 确实没有太大改进,它不是一个真正的性能编译器,而是一个通用的多目标编译器。如果 ADS 1.2 是免费的并且不需要许可证,它可能是用于 32 位 arm 指令开发的良好编译器。拇指模式?好吧,它是非常便携的原版。没有 thumb2 扩展。至于你的问题,我不是那样工作的,所以不知道如何在任何编译器上做到这一点,更不用说这个......
-
当时我正在使用 dhrystone,并且基准通常是 BS,因为它们很容易操纵结果。所以我不得不再次花时间对抗 llvm/clang 和 gnu 来看看它们是如何叠加起来的......