aspose.info
HU

REL – áthelyezhető modulfájl

Frissítve

Mi az a REL fájl?

A .rel kiterjesztésű fájl többféle célra használható. Ezért a játékok besorolása szempontjából áthelyezhető modulfájlként ismert, amelyet egyes Nintendo Wii játékok, például a Brawl, a Super Smash Bros és a Mario Kart Wii használnak. Tartalmazza a játékmenet adatait, beleértve a karaktermodelleket és a szakaszokat. A REL fájlok hasonlóan működnek, mint a Microsoft Windows által használt .DLL fájlok.

REL fájlformátum

A REL fájlformátumban a fájl több részre van osztva, hasonló hozzáférés szerint csoportosítva, pl. az egyik szakaszban csak az adatok olvashatók, az összes végrehajtható kód egy másikba kerül stb. A fájl fejlécszekcióval kezdődik, amelyet a következő követ:

  • A szakasz adatait tartalmazó táblázat.
  • A szakasz adatai.
  • Áthelyezési információk.

Fájlfejléc

A fájl legfeljebb 0x4C bájt méretű fejléccel kezdődik:

OffsetMéretMező neveLeírás
0x004azonosítóÖnkényes azonosító szám. Egyedinek kell lennie a játék által használt összes REL között. Nem lehet 0.
0x044következőMutató a következő modulra, futás közben kitöltve.
0x084előzőMutató az előző modulra, futás közben kitöltve.
0x0c4numSectionsA fájl szakaszainak száma.
0x104szakaszInfoEltolásEltolás a szakasztábla elejéhez.
0x144nameOffsetEltolás a modul nevét tartalmazó ASCII karakterláncra. Lehet NULL. A REL fájl elejéhez viszonyítva.
0x184névMéretA modul nevének mérete bájtban.
0x1c4verzióA REL fájlformátum verziószáma.
0x204bssSizeA „.bss” szakasz mérete.
0x244relOffsetEltolás az áthelyezési táblázathoz.
0x284impOffsetEltolás az imp táblázathoz.
0x2c4impSizeAz imp tábla mérete bájtban.
0x301prologSectionIndexelje a szakasztáblázatba, hogy melyik prologhoz viszonyít. Ha ez a mező 0, hagyja ki.
0x311epilogSectionIndexelje a szakasztáblázatba, hogy melyik epiloghoz tartozik. Ha ez a mező 0, hagyja ki.
0x321megoldatlanSectionIndexelje a szakasztáblázatba, amelyhez a feloldatlanság relatív. Ha ez a mező 0, hagyja ki.
0x331bssSectionIndexelje a szakasztáblázatba, amelyhez a bss relatív. Futás közben töltve!
0x344prologEltolás a _prolog függvény meghatározott szakaszába.
0x384epilógusEltolás az _epilog függvény meghatározott szakaszába.
0x3c4megoldatlanEltolás a _unresolved függvény meghatározott szakaszába.
0x404igazításCsak a ≥ 2 verzió. Igazítási kényszer minden szakaszon, 2-es hatványban kifejezve.
0x444bssAlignCsak a ≥ 2 verzió. Igazítási kényszer az összes „.bss” szakaszon, 2 hatványában kifejezve.
0x484fixSizeCsak a ≥ 3 verzió. Ha a REL az OSLinkFixedhez van kapcsolva (az OSLink helyett), a cím utáni szóköz más célokra is használható (például BSS).

Szakasz információs táblázat

A szakasz információs táblázata numSections bejegyzést tartalmaz, amelyek mindegyike 0x8 bájt hosszú:

OffsetMéretLeírás
0x030 bitEltolás a REL elejétől a szakaszig. Ha ez nulla, akkor a szakasz egy inicializálatlan szakasz (azaz .bss).
0x3,61 bitIsmeretlen.
0x3,71 bitVégrehajtható zászló; ha ez 1, akkor a szakasz végrehajtható.
0x44A szakasz hossza bájtban. Ha ez nulla, akkor ez a bejegyzés kimarad.
0x8Következő bejegyzésKövetkező bejegyzés

Áthelyezési adatok

Az áthelyezési adatok egy vagy több 0x8 bájtos struktúrák listája. Az egyes listák végét a 203-as speciális típuskód jelöli:

OffsetNévMéretLeírás
0x0offset2Eltolás bájtban az előző áthelyezéshez képest. Ha ez az első áthelyezés a szakaszon, akkor ez a szakasz kezdetéhez viszonyítva történik.
0x2típus1Az áthelyezés típusa. Az alábbiakban leírt.
0x3szakasz1A szimbólum azon része, amely ellen át kell helyezni. A 202-es speciális áthelyezési típusnál ez a fájl azon szakaszának száma, amelyre a következő áthelyezési bejegyzések vonatkoznak.
0x4hozzá4Eltolás bájtokban az áthelyezendő szimbólumhoz, a szakasz elejéhez képest. Ez egy abszolút cím a main.dol elleni költöztetésekhez.
0x8Következő bejegyzésKövetkező bejegyzésKövetkező bejegyzés

Hivatkozások

Lásd még