aspose.info
RO

REL – Fișier modul relocabil

Actualizat

Ce este un fișier REL?

Un fișier cu extensia .rel poate fi folosit în mai multe scopuri. Prin urmare, în ceea ce privește clasificarea jocului, este cunoscut ca un fișier modul relocabil folosit de unele jocuri Nintendo Wii, cum ar fi Brawl, Super Smash Bros și Mario Kart Wii. Acesta cuprinde datele de joc, inclusiv modelele de personaje și etapele. Fișierele REL funcționează similar cu fișierele .DLL utilizate de Microsoft Windows.

Format de fișier REL

Într-un format de fișier REL, fișierul este împărțit în mai multe secțiuni, grupate după acces similar, de exemplu, date numai pentru citire într-o secțiune, tot codul executabil este plasat în alta, etc. Fișierul începe cu o secțiune antet, urmată de:

  • Tabel care conține informații despre secțiune.
  • Datele secțiunii.
  • Informații despre relocare.

Antetul fișierului

Fișierul începe cu un antet de până la 0x4C octeți:

OffsetDimensiuneNume câmpDescriere
0x004idNumăr de identificare arbitrar. Trebuie să fie unic printre toate REL-urile utilizate de un joc. Nu trebuie să fie 0.
0x044următorulIndicator către modulul următor, completat în timpul execuției.
0x084prevIndicator către modulul anterior, completat în timpul execuției.
0x0c4numSectionsNumărul de secțiuni din dosar.
0x104sectionInfoOffsetDeplasare față de începutul tabelului de secțiuni.
0x144numeOffsetOffset la șirul ASCII care conține numele modulului. Poate fi NULL. Relativ la începutul fișierului REL.
0x184numeMărimeDimensiunea numelui modulului în octeți.
0x1c4versiuneaNumărul versiunii formatului de fișier REL.
0x204bssSizeDimensiunea secțiunii „.bss”.
0x244relOffsetDeplasare față de tabelul de relocare.
0x284impOffsetDeplasare la tabelul imp.
0x2c4impSizeDimensiunea tabelului imp în octeți.
0x301prologSectionIndexați în tabelul de secțiuni la care este relativ prolog. Omite dacă acest câmp este 0.
0x311epilogSectionIndexați în tabelul de secțiuni la care este relativ epilog. Omite dacă acest câmp este 0.
0x321nerezolvatăSecțiuneaIndexați în tabelul de secțiuni la care este relativ nerezolvat. Omite dacă acest câmp este 0.
0x331bssSectionIndexați în tabelul de secțiuni la care este relativ bss. Umplut în timpul rulării!
0x344prologDeplasare în secțiunea specificată a funcției _prolog.
0x384epilogDeplasare în secțiunea specificată a funcției _epilog.
0x3c4nerezolvatăDeplasare în secțiunea specificată a funcției _unresolved.
0x404aliniazăNumai versiunea ≥ 2. Constrângere de aliniere pe toate secțiunile, exprimată ca putere de 2.
0x444bssAlignNumai versiunea ≥ 2. Constrângere de aliniere pe toată secțiunea „.bss”, exprimată ca putere de 2.
0x484fixSizeNumai versiunea ≥ 3. Dacă REL este legat cu OSLinkFixed (în loc de OSLink), spațiul de după această adresă poate fi folosit în alte scopuri (cum ar fi BSS).

Tabelul cu informații despre secțiune

Tabelul cu informații despre secțiune conține intrări numSections fiecare 0x8 octeți lungime:

OffsetDimensiuneDescriere
0x030 de bițiOffset de la începutul REL la secțiune. Dacă acesta este zero, secțiunea este o secțiune neinițializată (adică .bss).
0x3,61 bitNecunoscut.
0x3,71 bitSteagul executabil; dacă acesta este 1, secțiunea este executabilă.
0x44Lungimea în octeți a secțiunii. Dacă acesta este zero, această intrare este omisă.
0x8Următoarea intrareUrmătoarea intrare

Date de relocare

Datele de relocare sunt una sau mai multe liste de structuri de 0x8 octeți. Sfârșitul fiecărei liste este marcat de codul de tip special 203:

OffsetNumeDimensiuneDescriere
0x0offset2Offset în octeți față de relocarea anterioară în aceasta. Dacă aceasta este prima mutare în secțiune, aceasta este relativă la începutul secțiunii.
0x2tip1Tipul de relocare. Descris mai jos.
0x3sectiunea1Secțiunea simbolului pe care să o relocați. Pentru tipul special de relocare 202, acesta este în schimb numărul secțiunii din acest fișier căreia i se aplică următoarele înregistrări de relocare.
0x4adaugă4Decalaj în octeți a simbolului față de care trebuie relocat, în raport cu începutul secțiunii sale. Aceasta este o adresă absolută, în schimb, pentru relocari împotriva main.dol.
0x8Următoarea intrareUrmătoarea intrareUrmătoarea intrare

Referințe

Vezi și