2016-04-08 5 views
2

Ich entwickle gerade eine eingebettete Anwendung, und das Problem ist, dass ich einen Punkt erreicht habe, wo die ganze App tatsächlich zu schwer für den RAM ist.Wird ein Programm in mehrere Dateien aufgeteilt, die schwerer sind als eine große Datei?

Also frage ich mich diese Frage: Wäre mein kompiliertes Programm leichter, wenn ich einige der Dateien in eine große Datei refractory würde?

Danke.

+0

Nein. Die Menge an Code und globalen Daten ist mindestens gleich. Möglicherweise müssen Sie Ihre Anwendung neu gestalten, um leichter zu sein. –

+0

Unter der Annahme, Bare-Metal, Mainstream-Mikrocontroller-Anwendung. Um RAM zu sparen, konzentriere dich darauf, häufige Anfängerfehler wie die Verwendung des Heaps, die Verwendung von stdio.h oder die Verwendung von Gleitkommazahlen zu entfernen. Wenn Sie eines davon in Ihrem Programm finden und es entfernen, werden wahrscheinlich große Mengen an RAM freigesetzt. – Lundin

+0

Alles was ich mir vorstellen kann ist, dass der Pfadname bei mehreren Dateien wahrscheinlich länger sein würde, aber ob relevant unterschiedlich, wer weiß .. –

Antwort

0

Wenn Ihr Code in der "großen Datei" und dem "viele Dateien" -Ansatz zu 100% identisch wäre, würde der Hauptunterschied darin bestehen, dass Adressen von Variablen und Funktionen durch den Linker aufgelöst werden als der Compiler. Dies sollte normalerweise zu genau derselben Binärdatei führen.

Es gibt jedoch Architekturen mit "kurzen relativen Adressierungsmodi" (Motorola 68k ist ein Beispiel) für Aufrufe und Referenzen, bei denen der "große Dateiansatz" tatsächlich zu (etwas) kleinerem Code und Daten führen könnte. Der Compiler kann solche kurzen Adressierungsmodi normalerweise nicht in Module einfügen, die zum Verknüpfen vorgesehen sind, da zur Kompilierungszeit nicht bekannt ist, wie weit die Referenz im resultierenden Programm entfernt sein würde.

Also, abhängig von der CPU, die Sie verwenden, könnten Sie tatsächlich ein paar Bytes gewinnen.

1

Nein, nicht im Allgemeinen.

Die Quellcodeorganisation hat keinen Einfluss auf die Speicherbelegung.

Es könnte möglich sein, das Programm umzuformen, um weniger Speicher zu verwenden, wenn Sie beispielsweise Funktionen haben, die zwar signifikante Mengen verwenden, aber niemals parallel laufen, aber das ist in einer Datei genauso möglich. Es erfordert nur, dass die Freigabe explizit gemacht wird.

Verwandte Themen