aspose.info
IT

REL - File del modulo rilocabile

Aggiornato

Che cos’è un file REL?

Un file con estensione .rel può essere utilizzato per diversi tipi di scopi. Pertanto, in termini di classificazione del gioco, è noto come un file modulo riposizionabile utilizzato da alcuni giochi per Nintendo Wii, come Brawl, Super Smash Bros e Mario Kart Wii. Comprende i dati di gioco, inclusi i modelli dei personaggi e le fasi. I file REL funzionano in modo simile ai file .DLL utilizzati da Microsoft Windows.

formato di file REL

In un formato di file REL, il file è diviso in più sezioni, raggruppate per accesso simile, ad esempio dati di sola lettura in una sezione, tutto il codice eseguibile è inserito in un’altra, ecc. Il file inizia con una sezione di intestazione, seguita da:

  • Tabella contenente le informazioni sulla sezione.
  • I dati della sezione.
  • Informazioni sul trasferimento.

Intestazione del file

Il file inizia con un’intestazione fino a 0x4C byte:

CompensazioneDimensioniNome campoDescrizione
0x004idNumero di identificazione arbitrario. Deve essere unico tra tutti i REL utilizzati da un gioco. Non deve essere 0.
0x044successivoPuntatore al modulo successivo, compilato in fase di esecuzione.
0x084precedentePuntatore al modulo precedente, compilato in fase di esecuzione.
0x0c4numSezioniNumero di sezioni nel file.
0x104sezioneInfoOffsetOffset all’inizio della tabella delle sezioni.
0x144nomeOffsetOffset alla stringa ASCII contenente il nome del modulo. Potrebbe essere NULLO. Relativo all’inizio del file REL.
0x184nomeTagliaDimensione del nome del modulo in byte.
0x1c4versioneNumero di versione del formato file REL.
0x204bssSizeDimensione della sezione ‘.bss’.
0x244relOffsetOffset alla tabella di trasferimento.
0x284impOffsetOffset alla tabella imp.
0x2c4impSizeDimensione della tabella imp in byte.
0x301prologSezioneIndice nella tabella delle sezioni a cui è relativo il prologo. Salta se questo campo è 0.
0x311epilogSezioneIndice nella tabella delle sezioni a cui è relativo l’epilogo. Salta se questo campo è 0.
0x321sezione non risoltaIndice nella tabella delle sezioni a cui si riferisce l’irrisolto. Salta se questo campo è 0.
0x331bssSezioneIndice nella tabella delle sezioni a cui bss è relativo. Riempito in fase di esecuzione!
0x344prologoOffset nella sezione specificata della funzione _prolog.
0x384epilogoOffset nella sezione specificata della funzione _epilog.
0x3c4irrisoltoOffset nella sezione specificata della funzione _non risolta.
0x404allineareSolo versione ≥ 2. Vincolo di allineamento su tutte le sezioni, espresso come potenza di 2.
0x444bssAlignSolo versione ≥ 2. Vincolo di allineamento su tutte le sezioni ‘.bss’, espresso come potenza di 2.
0x484fixSizeSolo versione ≥ 3. Se REL è collegato con OSLinkFixed (anziché OSLink), lo spazio dopo questo indirizzo può essere utilizzato per altri scopi (come BSS).

Tabella delle informazioni sulla sezione

La tabella delle informazioni sulla sezione contiene voci numSections ciascuna lunga 0x8 byte:

CompensazioneDimensioniDescrizione
0x030 bitOffset dall’inizio del REL alla sezione. Se questo è zero, la sezione è una sezione non inizializzata (es. .bss).
0x3.61 bitSconosciuto.
0x3.71 bitFlag eseguibile; se questo è 1 la sezione è eseguibile.
0x44Lunghezza in byte della sezione. Se questo è zero, questa voce viene ignorata.
0x8Voce successivaVoce successiva

Dati di trasferimento

I dati di rilocazione sono uno o più elenchi di strutture di 0x8 byte. La fine di ogni lista è contrassegnata dal codice speciale di tipo 203:

CompensazioneNomeDimensioniDescrizione
0x0compensazione2Offset in byte dal trasferimento precedente a questo. Se questo è il primo trasferimento nella sezione, è relativo all’inizio della sezione.
0x2tipo1Il tipo di trasferimento. Descritto sotto.
0x3sezione1La sezione del simbolo contro cui riposizionare. Per il tipo di trasferimento speciale 202, questo è invece il numero della sezione di questo file a cui si applicano le seguenti voci di trasferimento.
0x4aggiungere4Offset in byte del simbolo rispetto al quale riposizionare, rispetto all’inizio della sua sezione. Questo è invece un indirizzo assoluto per i traslochi contro main.dol.
0x8Voce successivaVoce successivaVoce successiva

Riferimenti

Vedi anche