„Position-independent Code“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
KLBot2 (Diskussion | Beiträge) K Bot: 4 Interwiki-Link(s) nach Wikidata (d:Q1582546) migriert | Code doppelt | ||
Zeile 6: | Zeile 6: | ||
==Weblinks== | ==Weblinks== | ||
* [http://www.gentoo.org/proj/en/hardened/pic-guide.xml Introduction to PIC | * [http://www.gentoo.org/proj/en/hardened/pic-guide.xml Introduction to PIC (englisch)] | ||
* [http://www.greyhat.ch/lab/downloads/pic.html PIC | * [http://www.greyhat.ch/lab/downloads/pic.html PIC für i386 (englisch)] | ||
[[Kategorie:Datenformat]] | [[Kategorie:Datenformat]] |
Version vom 5. Februar 2014, 13:21 Uhr
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.