keil编译输出Program Size与Map文件对应关系
在Keil编译过程中,我们经常需要将程序的大小输出到控制台或者调试器中。然而,程序大小不仅仅取决于代码本身,还需要考虑程序中所包含的静态和动态数据结构以及引用的其他文件的大小。因此,在输出程序大小时,我们需要同时考虑这些数据结构的大小。
在Keil中,我们可以通过编译时命令行参数中的-g选项来启用代码生成功能。这个选项会生成一个 debugging information (GI) 文件,其中包含了程序的内存地址和大小信息。在编译过程中,我们可以使用-g选项来生成GI文件,并在调试过程中使用它来查看程序在内存中的分布情况。
在生成GI文件后,我们可以通过-Map文件选项来指定程序中所包含的静态数据结构的大小。例如,如果我们想要输出程序中所包含的栈大小,我们可以通过以下命令来生成GI文件:
```
keil -c myprogram -g -Map myprogram.map
```
这个命令会将程序的内存地址和大小信息输出到控制台上,并在调试过程中使用该文件来查看程序在内存中的分布情况。
除了输出程序大小和GI文件之外,我们还可以使用-M选项来指定程序中所包含的动态数据结构的大小。例如,如果我们想要输出程序中所包含的数组大小,我们可以通过以下命令来生成GI文件:
```
keil -c myprogram -g -Map myprogram.map -M 1024
```
这个命令会将程序的内存地址和大小信息输出到控制台上,并在调试过程中使用该文件来查看程序在内存中的分布情况。
总结起来,在Keil编译过程中,程序大小和GI文件的对应关系是非常重要的。通过指定-g选项和-Map文件选项,我们可以在编译过程中和调试过程中同时输出程序大小和内存地址信息。