1525Fermer1527
Kevin KoflerLe 28/09/2010 à 17:44
squalyl (./1522) :
donc chaque programme nostub est obligé d'embarqué son propre code de calcul des relogements? #trihum#

C'est fait par le système d'exploitation (AMS)… mais… le format employé par AMS est tellement inefficace que souvent mettre une table en un format plus efficace avec le relogeur qui va avec prend moins de place! sad

Une des raisons est que le format d'AMS est fait pour être seulement relogé et pas dérelogé, donc ils mettent l'offset à reloger et l'offset de la destination dans la table. Les formats plus compacts (kernel, MLink, Fargo) mettent l'offset de destination directement dans le code, il est relogé par l'ajout de l'adresse de base et dérelogé par son retranchement (ce qui redonne l'offset initial). Le format kernel est juste une table d'offsets toute bête, les formats MLink et Fargo utilisent une compression par codage delta, celui de MLink étant plus simple et donc pouvant être décodé par un code de relogement plus petit que celui de Fargo. En général, le format MLink avec son code de décompression est le plus compact au total, mais comme c'est toi qui choisis ton décompresseur personnalisé en _nostub, tu as le choix, TIGCC gère les 3 formats (avec le relogeur qui va avec) et celui de AMS.