aspose.info
EL

REL - Relocatable Module File

Ενημερώθηκε

Τι είναι ένα αρχείο REL;

Ένα αρχείο με επέκταση .rel μπορεί να χρησιμοποιηθεί για διάφορους σκοπούς. Ως εκ τούτου, όσον αφορά την ταξινόμηση των παιχνιδιών είναι γνωστό ως ένα αρχείο μονάδας με δυνατότητα μετακίνησης που χρησιμοποιείται από ορισμένα παιχνίδια Nintendo Wii, όπως το Brawl, το Super Smash Bros και το Mario Kart Wii. Περιλαμβάνει τα δεδομένα του παιχνιδιού, συμπεριλαμβανομένων των μοντέλων χαρακτήρων και των σταδίων. Τα αρχεία REL έχουν παρόμοια απόδοση με τα αρχεία .DLL που χρησιμοποιούνται από τα Microsoft Windows.

Μορφή αρχείου REL

Σε μια μορφή αρχείου REL, το αρχείο χωρίζεται σε πολλές ενότητες, ομαδοποιημένες κατά παρόμοια πρόσβαση, π.χ. δεδομένα ανάγνωσης μόνο σε μια ενότητα, όλος ο εκτελέσιμος κώδικας τοποθετείται σε άλλη, κ.λπ. Το αρχείο ξεκινά με μια ενότητα κεφαλίδας, ακολουθούμενη από:

  • Πίνακας που περιέχει πληροφορίες ενότητας.
  • Τα στοιχεία της ενότητας.
  • Πληροφορίες μετεγκατάστασης.

Κεφαλίδα αρχείου

Το αρχείο ξεκινά με μια κεφαλίδα έως και 0x4C byte:

OffsetΜέγεθοςΌνομα πεδίουΠεριγραφή
0x004idΑυθαίρετος αριθμός αναγνώρισης. Πρέπει να είναι μοναδικό μεταξύ όλων των REL που χρησιμοποιούνται από ένα παιχνίδι. Δεν πρέπει να είναι 0.
0x044επόμενοΔείκτης στην επόμενη ενότητα, που συμπληρώνεται κατά το χρόνο εκτέλεσης.
0x084προηγούμενοΔείκτης στην προηγούμενη ενότητα, συμπληρωμένη κατά το χρόνο εκτέλεσης.
0x0c4numΕνότητεςΑριθμός ενοτήτων στο αρχείο.
0x104ενότηταInfoOffsetΜετατόπιση στην αρχή του πίνακα ενοτήτων.
0x144nameOffsetΜετατόπιση σε συμβολοσειρά ASCII που περιέχει το όνομα της μονάδας. Μπορεί να είναι NULL. Σε σχέση με την έναρξη του αρχείου REL.
0x184nameSizeΜέγεθος του ονόματος της μονάδας σε byte.
0x1c4έκδοσηΑριθμός έκδοσης της μορφής αρχείου REL.
0x204bssΜέγεθοςΜέγεθος της ενότητας «.bss».
0x244relOffsetΜετατόπιση στον πίνακα μετεγκατάστασης.
0x284impOffsetΜετατόπιση σε πίνακα imp.
0x2c4impSizeΜέγεθος πίνακα imp σε byte.
0x301prologΕνότηταΕυρετηρίαση στον πίνακα ενοτήτων με τον οποίο σχετίζεται το prolog. Παράλειψη εάν αυτό το πεδίο είναι 0.
0x311epilogΕνότηταΕυρετηριάστε στον πίνακα ενοτήτων με τον οποίο σχετίζεται ο επίλογος. Παράλειψη εάν αυτό το πεδίο είναι 0.
0x321ανεπίλυτοΕνότηταΕυρετήριο στον πίνακα ενοτήτων που δεν έχει επιλυθεί είναι σχετικός. Παράλειψη εάν αυτό το πεδίο είναι 0.
0x331bssΕνότηταΔημιουργήστε ευρετήριο στον πίνακα ενοτήτων με τον οποίο σχετίζεται το bss. Γέμισε κατά το χρόνο εκτέλεσης!
0x344πρόλογοςΜετατόπιση σε καθορισμένο τμήμα της συνάρτησης _prolog.
0x384επίλογοςΜετατόπιση σε καθορισμένο τμήμα της συνάρτησης _epilog.
0x3c4άλυτοΜετατόπιση σε καθορισμένο τμήμα της συνάρτησης _unresolved.
0x404ευθυγράμμισηΜόνο έκδοση ≥ 2. Περιορισμός ευθυγράμμισης σε όλα τα τμήματα, εκφρασμένος ως ισχύς 2.
0x444bssΕυθυγράμμισηΜόνο έκδοση ≥ 2. Περιορισμός ευθυγράμμισης σε όλο το τμήμα ‘.bss’, εκφρασμένος ως δύναμη 2.
0x484fixSizeΈκδοση ≥ 3 μόνο. Εάν το REL είναι συνδεδεμένο με το OSLinkFixed (αντί για το OSLink), ο χώρος μετά από αυτήν τη διεύθυνση μπορεί να χρησιμοποιηθεί για άλλους σκοπούς (όπως το BSS).

Πίνακας πληροφοριών ενότητας

Ο πίνακας πληροφοριών ενότητας περιέχει καταχωρήσεις numSections κάθε 0x8 byte:

OffsetΜέγεθοςΠεριγραφή
0x030 bitΜετατόπιση από την αρχή του REL στο τμήμα. Εάν αυτό είναι μηδέν, η ενότητα είναι μια ενότητα χωρίς αρχικοποίηση (δηλ. .bss).
0x3,61 bitΑγνωστος.
0x3,71 bitΕκτελεστή σημαία. αν αυτό είναι 1 η ενότητα είναι εκτελέσιμη.
0x44Μήκος σε byte της ενότητας. Εάν αυτό είναι μηδέν, αυτή η καταχώρηση παραλείπεται.
0x8Επόμενη καταχώρησηΕπόμενη καταχώρηση

Δεδομένα μετεγκατάστασης

Τα δεδομένα μετεγκατάστασης είναι μία ή περισσότερες λίστες δομών 0x8 byte. Το τέλος κάθε λίστας σημειώνεται με τον ειδικό κωδικό τύπου 203:

OffsetΌνομαΜέγεθοςΠεριγραφή
0x0αντιστάθμιση2Μετατόπιση σε byte από την προηγούμενη μετεγκατάσταση σε αυτήν. Εάν αυτή είναι η πρώτη μετεγκατάσταση στην ενότητα, αυτή είναι σε σχέση με την έναρξη της ενότητας.
0x2τύπος1Ο τύπος μετεγκατάστασης. Περιγράφεται παρακάτω.
0x3τμήμα1Το τμήμα του συμβόλου προς μετεγκατάσταση. Για τον ειδικό τύπο μετεγκατάστασης 202, αυτός είναι ο αριθμός της ενότητας σε αυτό το αρχείο για την οποία ισχύουν οι ακόλουθες εγγραφές μετεγκατάστασης.
0x4προσθήκη4Μετατόπιση σε byte του συμβόλου προς μετεγκατάσταση, σε σχέση με την αρχή της τομής του. Αυτή είναι μια απόλυτη διεύθυνση αντί για μετεγκαταστάσεις ενάντια στο main.dol.
0x8Επόμενη καταχώρησηΕπόμενη καταχώρησηΕπόμενη καταχώρηση

βιβλιογραφικές αναφορές

Δείτε επίσης