Résumé
Relocation is the process of assigning load addresses for position-dependent code and data of a program and adjusting the code and data to reflect the assigned addresses. Prior to the advent of multiprocess systems, and still in many embedded systems, the addresses for objects were absolute starting at a known location, often zero. Since multiprocessing systems dynamically link and switch between programs it became necessary to be able to relocate objects using position-independent code. A linker usually performs relocation in conjunction with symbol resolution, the process of searching files and libraries to replace symbolic references or names of libraries with actual usable addresses in memory before running a program. Relocation is typically done by the linker at link time, but it can also be done at load time by a relocating loader, or at run time by the running program itself. Some architectures avoid relocation entirely by deferring address assignment to run time; as, for example, in stack machines with zero address arithmetic or in some segmented architectures where every compilation unit is loaded into a separate segment. s are segmented into various memory segment types. Example segments include code segment (.text), initialized data segment (.data), uninitialized data segment (.bss), or others. The relocation table is a list of pointers created by the translator (a compiler or assembler) and stored in the object or executable file. Each entry in the table, or "fixup", is a pointer to an absolute address in the object code that must be changed when the loader relocates the program so that it will refer to the correct location. Fixups are designed to support relocation of the program as a complete unit. In some cases, each fixup in the table is itself relative to a base address of zero, so the fixups themselves must be changed as the loader moves through the table. In some architectures a fixup that crosses certain boundaries (such as a segment boundary) or that is not aligned on a word boundary is illegal and flagged as an error by the linker.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
Cours associés (2)
AR-301(t): Studio BA5 (Kueng et Caputo)
La Vita è Bella engages with the question of how people appropriate their surroundings in the private and public sphere. How do we adopt and intervene in this world? By means of built interventions, 1
AR-401(t): Studio MA1 (Kueng & Caputo)
La Vita è Bella engages with the question of how people appropriate their surroundings in the private and public sphere. How do we adopt and intervene in this world? By means of built interventions, 1
Séances de cours associées (17)
Mémoire virtuelle
Couvre les interactions de mémoire virtuelle, de relocalisation de programme, de protection de mémoire, de TLB et de hiérarchie de mémoire.
Pointeur et allocation dynamique en C++
Couvre les pointeurs, l'allocation dynamique de la mémoire, l'utilisation const et les structures de données complexes en C ++.
Afficher plus
Publications associées (12)

Improving frequency containment reserve provision in run-of-river hydropower plants

Mario Paolone, Elena Vagnoni, Francesco Gerini

The paper presents a model-based control strategy for optimal asset management of hydroelectric units in run-of-river hydropower plants. The proposed control strategy aims to operate the unit at the best efficiency while improving water flow management and ...
2021
Afficher plus
Concepts associés (16)
Dynamic Link Library
Une Dynamic Link Library (en français, bibliothèque de liens dynamiques) est une bibliothèque logicielle dont les fonctions sont chargées en mémoire par un programme, au besoin, lors de son exécution, par opposition aux bibliothèques logicielles statiques ou partagées dont les fonctions sont chargées en mémoire avant le début de l'exécution du programme. dll est une extension de nom de fichier utilisée par des fichiers contenant une Dynamic Link Library. Ces bibliothèques logicielles ont été inventées dans Multics en 1964 et existent dans Windows depuis 1985.
Binary File Descriptor library
The Binary File Descriptor library (BFD) is the GNU Project's main mechanism for the portable manipulation of s in a variety of s. , it supports approximately 50 file formats for some 25 instruction set architectures. When David Henkel-Wallace of Cygnus Support proposed developing the library as a way to open up new business opportunities for the company, Richard Stallman said that it would be difficult; David's response was that it wasn't such a "Big Fucking Deal". Abbreviated to "BFD", this became the library name.
Position-independent code
In computing, position-independent code (PIC) or position-independent executable (PIE) is a body of machine code that, being placed somewhere in the primary memory, executes properly regardless of its absolute address. PIC is commonly used for shared libraries, so that the same library code can be loaded at a location in each program's address space where it does not overlap with other memory in use by, for example, other shared libraries.
Afficher plus