检查源代码以了解双精度浮点运算的使用

问题描述 投票:0回答:1

我正在寻找一种简单的方法来阻止我们的项目使用双精度浮点运算。目前,我正在尝试使用正则表达式来过滤我们项目中的双精度(长双精度等)变量和常量的困难方法。但是变量/常量/定义在整个软件中的流动很难遵循。 我们的MCU支持硬件单精度浮点运算,但不支持双精度。我们希望通过通知用户来严格禁止双精度浮点运算的意外使用(例如失败的构建过程)。不幸的是,我们需要包含预构建的软件模块,这会禁止使用编译器标志(有一个可以自动将双精度转换为浮点等)。有人有检查双精度运算的通用方法吗?例如在链接器中? 非常感谢!

linker double precision
1个回答
0
投票

如果双精度运算是通过 FP 模拟实现的,即通过调用库函数,您可以检查它们是否存在于最终链接的二进制文件中。对于 GNU 目标,您可以使用例如

objdump
为此:

# TODO: add all functions from libgcc in grep
$ arm-none-eabi-objdump -d a.out | grep -E '\<bl .*(add|sub|mul)df3'

readelf
:

# TODO: add all functions from libgcc in grep
$ arm-none-eabi-readelf -sW a.out | grep '(add|sub|mul)df3'
© www.soinside.com 2019 - 2024. All rights reserved.