Offset assembeur

djak -  
jisisv Messages postés 3678 Statut Modérateur -
Bonjour, je ne comprends pas très bien ce qu'est un offset en terme assembleur, je sais que c'est un décalage mais encore ? Graphiquement comment pourrait-on le représenter ?


merci

5 réponses

djak
 
Une réponse ?
0
nicocorico Messages postés 846 Statut Membre 138
 
Ouiii voici une réponse :
l'offset est un déplacement relatif à un point de départ, c'est par exemple un index dans un tableau, tout simplement... En fait on dit Offset et non pas index car en assembleur on pars du principe qu'il n'y a pas de structure, et là où un index est indépendant de la taille des éléments, l'offset lui serait la multiplication de la taille des éléments et de l'index, exprimé en octets.
0
djak
 
merci de ta réponse, mais graphiquement comment pourrait t-on le représenter ?

J'ai entendu parler qu'il fallait s'imaginer une route découpé de segment de 64 ko et quel les segments étaient délimité par des bornes kilométrique, si je puis m'exprimer ainsi...
0
nicocorico Messages postés 846 Statut Membre 138
 
Hé bien disons que l'analogie n'est pas tout à fait juste, puisque les segments peuvent se chevaucher... et puis on est pas obligés de se représenter des segments de 64ko car c'est une limitation en assembleur 16 bits (64ko Max...), mais en asm 32 bits, les segments permettent chacuns l'accès à 4Go.
Et je suis pas très fan de la représentation routière, qui trouve vite ses limites quand on sait qu'un bloc de mémoire peut être alloué n'importe où, là ou il y a suffisament de place, et n'est donc pas vraiment linéaire...
Pour faire très simple :
Tu alloues un bloc de mémoire de 20 ko,
Tu mets une variable d'un octet à l'offset 0 de ce bloc,
Tu mets une autre variable de 4 octets à l'offset 01, évitant le chevauchement avec la 1ère,
ensuite tu peux en mettre une autre à l'offset 05...
Et si tu n'utilises pas le reste du bloc, c'est du gachis, car il sera employé nulle part ailleurs jusqu'à ce que tu le libères..

Le chêne aussi était un gland, avant d'être un chêne
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jisisv Messages postés 3678 Statut Modérateur 935
 
Notons que l'utilisation de la segmentation par blocs de 64Kb date de l'époque des OS 16bitts et en mode réel (sous 80x86) est complètement dépassée de nos jours.
0