aspose.info
DA

REL - Relocatable Module File

Opdateret

Hvad er en REL fil?

En fil med filtypenavnet .rel kan bruges til flere slags formål. Derfor er det med hensyn til spilklassificering kendt som en flytbar modulfil, der bruges af nogle Nintendo Wii-spil, såsom Brawl, Super Smash Bros og Mario Kart Wii. Det omfatter gameplay-data, inklusive karaktermodeller og stadier. REL-filer fungerer på samme måde som .DLL-filer, der bruges af Microsoft Windows.

REL filformat

I et REL-filformat er filen opdelt i flere sektioner, grupperet efter lignende adgang, f.eks. læsedata i én sektion, al eksekverbar kode placeres i en anden osv. Filen starter med en header-sektion, efterfulgt af:

  • Tabel med sektionsinfo.
  • Sektionsdataene.
  • Flytteoplysninger.

Filoverskrift

Filen starter med en header på op til 0x4C bytes:

OffsetStørrelseFeltnavnBeskrivelse
0x004idArbitrary identification number. Must be unique amongst all RELs used by a game. Must not be 0.
0x044næstePointer til næste modul, udfyldt ved kørsel.
0x084forrigePointer til forrige modul, udfyldt under kørsel.
0x0c4antalSektionerAntal sektioner i filen.
0x104sectionInfoOffsetOffset til starten af sektionstabellen.
0x144navnOffsetOffset til ASCII-streng, der indeholder navnet på modulet. Kan være NULL. I forhold til starten af REL-fil.
0x184navnestørrelseModulnavnets størrelse i bytes.
0x1c4versionVersionsnummer for REL-filformatet.
0x204bssStørrelseStørrelsen på ‘.bss’-sektionen.
0x244relOffsetOffset til flyttetabellen.
0x284impOffsetOffset til imp-tabel.
0x2c4impSizeStørrelse af imp-tabellen i bytes.
0x301prologSectionIndex into section table which prolog is relative to. Skip if this field is 0.
0x311epilogSectionIndex into section table which epilog is relative to. Skip if this field is 0.
0x321unresolvedSectionIndex into section table which unresolved is relative to. Skip if this field is 0.
0x331bssSektionIndeks i sektionstabel, som bss er i forhold til. Fyldt på køretid!
0x344prologOffset til specificeret sektion af _prolog-funktionen.
0x384epilogOffset til specificeret sektion af _epilog-funktionen.
0x3c4uafklaretOffset til specificeret sektion af _unresolved-funktionen.
0x404alignVersion ≥ 2 only. Alignment constraint on all sections, expressed as power of 2.
0x444bssAlignVersion ≥ 2 only. Alignment constraint on all ‘.bss’ section, expressed as power of 2.
0x484fixSizeKun version ≥ 3. Hvis REL er forbundet med OSLinkFixed (i stedet for OSLink), kan pladsen efter denne adresse bruges til andre formål (såsom BSS).

Sektionsinfotabel

Sektionsinformationstabellen indeholder numSections-indgange hver 0x8 bytes lang:

OffsetStørrelseBeskrivelse
0x030 bitsOffset fra begyndelsen af REL til sektionen. Hvis dette er nul, er sektionen en ikke-initialiseret sektion (dvs. .bss).
0x3,61 bitUkendt.
0x3,71 bitEksekverbart flag; hvis dette er 1, er sektionen eksekverbar.
0x44Længde i bytes af sektionen. Hvis dette er nul, springes denne post over.
0x8Næste postNæste post

Flyttedata

Flyttedataene er en eller flere lister med 0x8 byte-strukturer. Slutningen af hver liste er markeret med den særlige typekode 203:

OffsetNavnStørrelseBeskrivelse
0x0forskydning2Offset i bytes fra den forrige flytning til denne. Hvis dette er første flytning i afsnittet, er dette i forhold til afsnitsstart.
0x2type1Flyttetypen. Beskrevet nedenfor.
0x3afsnit1Den del af symbolet, der skal flyttes imod. For den særlige flyttetype 202 er dette i stedet nummeret på den sektion i denne fil, som følgende flytteposter gælder for.
0x4tilføje4Forskydning i bytes af symbolet, der skal flyttes imod, i forhold til starten af dets sektion. Dette er en absolut adresse i stedet for flytninger mod main.dol.
0x8Næste postNæste postNæste post

Referencer

Se også