Position-independent Code

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 31. März 2022 um 15:59 Uhr durch imported>Anonym~dewiki(31560).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Position-independent Code

(PIC; deutsch: positionsunabhängiger Code) oder

position-independent executable

(PIE; deutsch: positionsunabhängiges ausführbares Programm) bezeichnet Maschinencode, der ausgeführt werden kann, unabhängig davon, an welcher Adresse er sich im Hauptspeicher befindet. PIC wird üblicherweise für dynamische Bibliotheken verwendet, damit diese für jedes Programm an eine beliebige Speicherposition geladen werden können, wo sie sich nicht mit anderen Objekten des Programms überlappen. Auf älteren Computern ohne MMU wurde PIC verwendet, um die verschiedenen Programme gleichzeitig in den Speicher laden zu können, obwohl solche Systeme nur einen Adressraum haben.

Position-independent Code

unterscheidet sich von relozierbarem Code, bei dem vor der Ausführung alle verwendeten Adressen bei Speicherzugriffen durch den Linker oder Lader an die aktuelle Position im Speicher angepasst werden müssen. Um positionsunabhängigen Code zu generieren, muss der Compiler diese Adressierungsart unterstützen. Er muss sämtliche Maschinenbefehle, die sich auf eine absolute Speicheradresse beziehen, durch entsprechende Befehle ersetzen, die relativ zur aktuellen Position arbeiten. Diese zusätzliche Indirektion kann dazu führen, dass positionsunabhängiger Code langsamer ausgeführt wird als das identische Programm in positionsabhängigem Code.

Mit dem Übergang zur virtuellen Adressierung durch die MMU ist es möglich geworden, Programmcode immer an dieselben virtuelle Adresse zu laden, so dass PIC an Bedeutung verloren hat.

Weblinks