将程序划分为比使用一个大文件更重的多个文件?

时间:2016-04-08 10:21:20

标签: c compilation embed

我目前正在开发一个嵌入式应用程序,问题是我已经达到了整个应用程序实际上对RAM太重的程度。

所以我问自己这个问题:如果我将一些文件折射成一个大文件,我编译的程序会更轻吗?

感谢。

2 个答案:

答案 0 :(得分:1)

不,不是一般的。

源代码组织不会影响内存使用。

有可能重构程序以使用更少的内存,例如,如果您具有使用大量但从不并行运行的功能,但这在单个文件中同样可行。它只需要明确分享。

答案 1 :(得分:0)

如果你的代码在"大文件中是100%相同的"以及"许多文件"方法,主要区别在于变量和函数的地址将由链接器而不是编译器解析(即填充到二进制文件中)。这通常应该导致完全相同的二进制文件。

然而,有一些架构具有"短相对寻址模式" (摩托罗拉68k就是一个例子)用于呼叫和引用,其中"大文件方法"实际上可能导致(稍微)更小的代码和数据。编译器通常不能将这种短寻址模式插入到用于链接的模块中,因为在编译时不知道引用在结果程序中的距离。

因此,根据您使用的CPU,您实际上可能会获得几个字节。