aspose.info
FR

REL - Fichier de module déplaçable

Mis à jour le

Qu’est-ce qu’un fichier REL ?

Un fichier avec l’extension .rel peut être utilisé à plusieurs fins. Par conséquent, en termes de classification de jeu, il est connu comme un fichier de module déplaçable utilisé par certains jeux Nintendo Wii, tels que Brawl, Super Smash Bros et Mario Kart Wii. Il comprend les données de jeu, y compris les modèles de personnages et les étapes. Les fichiers REL fonctionnent de la même manière que les fichiers .DLL utilisés par Microsoft Windows.

Format de fichier REL

Dans un format de fichier REL, le fichier est divisé en plusieurs sections, regroupées par accès similaire, par exemple, les données en lecture seule dans une section, tout le code exécutable est placé dans une autre, etc. Le fichier commence par une section d’en-tête, suivie de :

  • Tableau contenant des informations sur la section.
  • Les données de section.
  • Informations de déménagement.

En-tête de fichier

Le fichier commence par un en-tête de jusqu’à 0x4C octets :

DécalageTailleNom du champDescriptif
0x004identifiantNuméro d’identification arbitraire. Doit être unique parmi tous les REL utilisés par un jeu. Ne doit pas être 0.
0x044suivantPointeur vers le module suivant, rempli au moment de l’exécution.
0x084précPointeur vers le module précédent, rempli à l’exécution.
0x0c4nombreSectionsNombre de sections dans le fichier.
0x104sectionInfoOffsetDécalage au début de la table de section.
0x144nameOffsetDécalage vers la chaîne ASCII contenant le nom du module. Peut être NULL. Relatif au début du fichier REL.
0x184nomTailleTaille du nom du module en octets.
0x1c4versionNuméro de version du format de fichier REL.
0x204bssTailleTaille de la section ‘.bss’.
0x244DécalagerelDécalage à la table de relocalisation.
0x284impOffsetDécalage vers la table imp.
0x2c4impSizeTaille de la table imp en octets.
0x301prologSectionIndex dans la table de section à laquelle le prologue est relatif. Ignorer si ce champ vaut 0.
0x311épilogueSectionIndex dans la table de section à laquelle l’épilogue est relatif. Ignorer si ce champ vaut 0.
0x321non résoluSectionIndex dans la table de section à laquelle non résolu est relatif. Ignorer si ce champ vaut 0.
0x331bssSectionIndex dans la table de section à laquelle bss est relatif. Rempli à l’exécution !
0x344prologueDécalage dans la section spécifiée de la fonction _prolog.
0x384épilogueDécalage dans la section spécifiée de la fonction _epilog.
0x3c4non résoluDécalage dans la section spécifiée de la fonction _unresolved.
0x404alignerVersion ≥ 2 uniquement. Contrainte d’alignement sur toutes les sections, exprimée en puissance de 2.
0x444bssAlignerVersion ≥ 2 uniquement. Contrainte d’alignement sur toutes les sections ‘.bss’, exprimée en puissance de 2.
0x484taillefixeVersion ≥ 3 uniquement. Si REL est lié avec OSLinkFixed (au lieu de OSLink), l’espace après cette adresse peut être utilisé à d’autres fins (comme BSS).

### Tableau d’informations sur les sections La table d’informations de section contient des entrées numSections de 0x8 octets chacune :

DécalageTailleDescriptif
0x030 bitsDécalage du début du REL à la section. Si c’est zéro, la section est une section non initialisée (c’est-à-dire .bss).
0x3.61 bitInconnue.
0x3.71 bitDrapeau exécutable ; si c’est 1 la section est exécutable.
0x44Longueur en octets de la section. S’il s’agit de zéro, cette entrée est ignorée.
0x8Entrée suivanteEntrée suivante

Données de relocalisation

Les données de relocalisation sont une ou plusieurs listes de structures de 0x8 octets. La fin de chaque liste est marquée par le code de type spécial 203 :

DécalageNomTailleDescriptif
0x0décalage2Décalage en octets du déplacement précédent vers celui-ci. S’il s’agit du premier déplacement dans la section, il est relatif au début de la section.
0x2taper1Le type de déménagement. Décrit ci-dessous.
0x3rubrique1La section du symbole par rapport à laquelle se déplacer. Pour le type de relocalisation spécial 202, il s’agit plutôt du numéro de la section de ce fichier à laquelle s’appliquent les entrées de relocalisation suivantes.
0x4ajouter4Décalage en octets du symbole par rapport auquel se déplacer, par rapport au début de sa section. Il s’agit plutôt d’une adresse absolue pour les relocalisations vers main.dol.
0x8Entrée suivanteEntrée suivanteEntrée suivante

Références

Voir aussi