aspose.info
ES

REL - Archivo de módulo reubicable

Actualizado

¿Qué es un archivo REL?

Un archivo con extensión .rel se puede utilizar para varios tipos de propósitos. Por lo tanto, en términos de clasificación de juegos, se conoce como un archivo de módulo reubicable utilizado por algunos juegos de Nintendo Wii, como Brawl, Super Smash Bros y Mario Kart Wii. Comprende los datos del juego, incluidos los modelos de personajes y las etapas. Los archivos REL funcionan de manera similar a los archivos .DLL utilizados por Microsoft Windows.

formato de archivo REL

En un formato de archivo REL, el archivo se divide en varias secciones, agrupadas por acceso similar, por ejemplo, datos de solo lectura en una sección, todo el código ejecutable se coloca en otra, etc. El archivo comienza con una sección de encabezado, seguida de:

  • Tabla que contiene la información de la sección.
  • Los datos de la sección.
  • Información de reubicación.

Encabezado del archivo

El archivo comienza con un encabezado de hasta 0x4C bytes:

CompensaciónTamañoNombre de campoDescripción
0x004identificaciónNúmero de identificación arbitrario. Debe ser único entre todos los NIR utilizados por un juego. No debe ser 0.
0x044siguientePuntero al siguiente módulo, rellenado en tiempo de ejecución.
0x084anteriorPuntero al módulo anterior, rellenado en tiempo de ejecución.
0x0c4númSeccionesNúmero de secciones en el archivo.
0x104secciónInfoOffsetDesplazamiento al inicio de la tabla de sección.
0x144nombreOffsetDesplazamiento a cadena ASCII que contiene el nombre del módulo. Puede ser NULL. Relativo al inicio del archivo REL.
0x184nombreTamañoTamaño del nombre del módulo en bytes.
0x1c4versiónNúmero de versión del formato de archivo REL.
0x204bssTamañoTamaño de la sección ‘.bss’.
0x244relOffsetDesplazamiento a la tabla de reubicación.
0x284impOffsetDesplazamiento a la tabla imp.
0x2c4tamañoimpTamaño de la tabla imp en bytes.
0x301prologSectionÍndice en la tabla de sección a la que se refiere el prólogo. Omitir si este campo es 0.
0x311epilogSectionÍndice en la tabla de sección a la que se refiere el epílogo. Omitir si este campo es 0.
0x321sección no resueltaÍndice en la tabla de la sección con la que no resuelto es relativo. Omitir si este campo es 0.
0x331bssSecciónÍndice en la tabla de sección a la que se refiere bss. Lleno en tiempo de ejecución!
0x344prólogoDesplazamiento en la sección especificada de la función _prolog.
0x384epílogoDesplazamiento en la sección especificada de la función _epilog.
0x3c4sin resolverCompensación en la sección especificada de la función _unresolved.
0x404alinearSolo versión ≥ 2. Restricción de alineación en todas las secciones, expresada como potencia de 2.
0x444bssAlinearSolo versión ≥ 2. Restricción de alineación en toda la sección ‘.bss’, expresada como potencia de 2.
0x484arreglarTamañoSolo versión ≥ 3. Si REL está vinculado con OSLinkFixed (en lugar de OSLink), el espacio después de esta dirección se puede usar para otros fines (como BSS).

Tabla de información de la sección

La tabla de información de la sección contiene entradas numSections cada una de 0x8 bytes de largo:

CompensaciónTamañoDescripción
0x030 bitsDesplazamiento desde el comienzo del REL hasta la sección. Si es cero, la sección es una sección no inicializada (es decir, .bss).
0x3.61 bitDesconocido.
0x3.71 bitBandera ejecutable; si es 1, la sección es ejecutable.
0x44Longitud en bytes de la sección. Si es cero, esta entrada se omite.
0x8Siguiente entradaSiguiente entrada

Datos de reubicación

Los datos de reubicación son una o más listas de estructuras de 0x8 bytes. El final de cada lista está marcado por el código de tipo especial 203:

CompensaciónNombreTamañoDescripción
0x0compensación2Compensación en bytes desde la reubicación anterior a esta. Si esta es la primera reubicación en la sección, esto es relativo al inicio de la sección.
0x2tipo1El tipo de traslado. Descrito abajo.
0x3sección1La sección del símbolo contra la que se va a reubicar. Para el tipo de reubicación especial 202, este es en cambio el número de la sección en este archivo a la que se aplican las siguientes entradas de reubicación.
0x4sumando4Desplazamiento en bytes del símbolo contra el que se va a reubicar, en relación con el inicio de su sección. Esta es una dirección absoluta en lugar de reubicaciones contra main.dol.
0x8Siguiente entradaSiguiente entradaSiguiente entrada

Referencias

Véase también