Der BSS ist ein Platzhalter, der in Ihrem ausführbaren (oder ELF-) Format definiert ist. Es nimmt also keinen Speicherplatz ein, sondern gibt nur an, welche Speicherregion vom Linker oder Loader zugewiesen werden soll.
Die genaue Funktionsweise hängt vom Betriebssystem ab. Da Sie sich auf ELF beziehen, gehe ich davon aus, dass es für den Einsatz in einem Embedded-System gedacht ist. Wenn Sie für ROM-fähigen Code erstellen, wird Ihre Linker-Cmd-Datei die BSS einer statischen Adressregion zuordnen.
Wenn Sie für ein Betriebssystem (d. H. Linux) erstellen, führt der Loader des Betriebssystems einen Relocation-Pass aus, in dem alle als relativ im executable-Format markierten Speicherorte physischen oder logischen Speicherorten zugeordnet werden.
Da Sie erwähnen, dass immer der gleiche Wert angezeigt wird, zeigt dies an, dass der Prozess für Ihr System wiederholbar ist. Erwarten Sie Änderungen zu sehen, wenn Sie Linker-Dateien ändern (d. H. Adressregionen), Verbindungsreihenfolge (d. H. Module erhalten zugewiesenen Platz in einer anderen Reihenfolge) oder Betriebssystem.
Unabhängig davon, ob Sie die BSS-Werte verwenden oder nicht, bleibt die Adresse für den ausgeführten Prozess gleich.
Ich habe bemerkt, dass Sie eine Antwort 5 Minuten nach dem Stellen der Frage angenommen haben. Sie erhalten mehr Antworten, wenn Sie es für einige Zeit offen lassen, da die Leute mehr motiviert sind, die Antworten zu verbessern. – Adriaan
Danke für den Hinweis, ich werde es beim nächsten Mal sicher tun. – Patrick