VMA et LMA

tatuyan Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour.

En lisant le tutoriel concernant le linkage,
https://sourceware.org/binutils/docs/ld/Basic-Script-Concepts.html#Basic-Script-Concepts

j'ai perdu le fil logique . voilà la partie dans laquelle je suis confus.
Every loadable or allocatable output section has two addresses. The first is the VMA, or virtual memory address. This is the address the section will have when the output file is run. The second is the LMA, or load memory address. This is the address at which the section will be loaded. In most cases the two addresses will be the same. An example of when they might be different is when a data section is loaded into ROM, and then copied into RAM when the program starts up (this technique is often used to initialize global variables in a ROM based system). In this case the ROM address would be the LMA, and the RAM address would be the VMA.


Je pensais depuis longtemps que la notion de mémoire virtuelle a été conçue pour maximiser l'efficacité dans le management de mémoire . Les adresses logiques sont alloueés par le noyau,et au moment de compilation( avec le linckage),la table des adresses est traduite pour qu'elle représente l'emplacement physique des éxecutables.

1 réponse

mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 879
 
Je pense que cet article est plus clair, il insiste bien sur le fait que VMA et LMA sont des notions spécifiques à
ld
:
http://www.bravegnu.org/gnu-eprog/data-in-ram.html

La notion dont tu parles est indépendante de
ld
et correspond à ce qui est expliqué ici :
https://en.wikipedia.org/wiki/Virtual_memory

Bonne chance
1