公平比较代码大小

And*_*rew 2 c embedded size

我编写了一个在嵌入式处理器(ARM)上运行的算法的两种不同的C实现.我想要一个公平的方法来比较这两个实现的代码大小,所以下载可执行文件时,我得到以下数字:

Implementation One

 .text size 55098 bytes
 .data size 2048 bytes

Implementation Two

 .text size 54598 bytes
 .data size 2048 bytes
Run Code Online (Sandbox Code Playgroud)

.text段的差异是500字节,但相对而言,它并不是很多.问题是,该图还包含围绕可执行文件的引导代码,以便可以在独立模式下调用它,即,在嵌入式处理器上没有操作系统.

我想知道是否有人知道如何获得可执行文件的ACTUAL代码大小而没有所有膨胀的额外代码.

非常感谢安德鲁

2.7*_*718 8

  1. 您的C编译器通常可以生成您可以检查的汇编源代码.
  2. 另一种可能性是从链接器查看映射文件,它应该为您提供各个函数的大小.
  3. 您可以使用调试器查看二进制代码.

要获取asm输出或映射文件,需要为编译器和/或链接器指定适当的选项.这些选项取决于您使用的工具链(编译器,链接器).

要从gcc获取asm输出:gcc -S -o hello_asm.s hello.c