Position-independent Code
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 dieselbe virtuelle Adresse zu laden, so dass PIC an Bedeutung verloren hat.
Weblinks
- Introduction to PIC (englisch)
- PIC für i386 (englisch)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.