Position-Independent Code

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
QS-Informatik

Dieser Artikel wurde wegen inhaltlicher Mängel auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an der Diskussion! (+)
Begründung: Struktur und Quellen --Crazy1880 18:58, 6. Mai 2011 (CEST)

Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Die fraglichen Angaben werden daher möglicherweise demnächst entfernt. Bitte hilf der Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Näheres ist eventuell auf der Diskussionsseite oder in der Versionsgeschichte angegeben. Bitte entferne zuletzt diese Warnmarkierung.

Position-independent Code (PIC, engl. für positionsunabhängiger Code) ist Maschinencode, der ausgeführt werden kann, unabhängig davon, an welcher absoluten Adresse im Hauptspeicher er sich befindet. PIC wird üblicherweise für dynamische Bibliotheken verwendet, damit diese für jedes Programm an eine Speicherposition geladen werden können, wo sie sich nicht mit anderen Objekten dieses 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 kann an eine beliebige Stelle im Speicher kopiert und von dort ohne Änderungen ausgeführt werden. Damit unterscheidet er sich von relozierbarem Code, der einer speziellen Verarbeitung durch den Linker oder Lader bedarf, bevor er an einer bestimmten Speicherposition ausgeführt werden kann. Der Quellcode, aus dem PIC generiert wird, muss bestimmte Anforderungen erfüllen. Ebenso muss der Compiler es unterstützen. Er muss sämtliche Maschinenbefehle, die sich auf eine absolute Speicheradresse beziehen, durch entsprechende Befehle ersetzen, die relativ zum Befehlszähler (oder zum Stackpointer) arbeiten. Diese zusätzliche Indirektion kann dazu führen, dass positionsunabhängiger Code langsamer ausgeführt wird als äquivalenter positionsabhängiger Code.

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

Weblinks[Bearbeiten]