aspose.info
KO

REL - 재배치 가능한 모듈 파일

업데이트

.REL 파일이란?

확장자가 .rel인 파일은 여러 가지 용도로 사용할 수 있습니다. 따라서 게임 분류 측면에서 Brawl, Super Smash Bros 및 Mario Kart Wii와 같은 일부 Nintendo Wii 게임에서 사용되는 재배치 가능한 모듈 파일로 알려져 있습니다. 캐릭터 모델과 스테이지를 포함한 게임 플레이 데이터로 구성됩니다. REL 파일은 Microsoft Windows에서 사용하는 .DLL 파일과 유사하게 수행됩니다.

REL 파일 형식

REL 파일 형식에서 파일은 여러 섹션으로 나뉘며 같은 액세스로 그룹화됩니다. 예를 들어 한 섹션에 데이터 읽기 전용, 모든 실행 코드가 다른 섹션에 배치됩니다. 파일은 헤더 섹션으로 시작하고 그 뒤에 다음이 따라옵니다.

  • 섹션 정보를 포함하는 테이블.
  • 섹션 데이터.
  • 이전 정보.

파일 헤더

파일은 최대 0x4C 바이트의 헤더로 시작합니다.

오프셋크기필드 이름설명
0x004아이디임의 식별 번호. 게임에서 사용하는 모든 REL 중에서 고유해야 합니다. 0이 아니어야 합니다.
0x044다음런타임에 채워진 다음 모듈에 대한 포인터입니다.
0x084이전런타임에 채워진 이전 모듈에 대한 포인터입니다.
0x0c4numSections파일의 섹션 수입니다.
0x104섹션 정보 오프셋단면 테이블의 시작 부분으로 오프셋합니다.
0x144이름 오프셋모듈 이름을 포함하는 ASCII 문자열에 대한 오프셋입니다. NULL일 수 있습니다. REL 파일의 시작을 기준으로 합니다.
0x184이름크기바이트 단위의 모듈 이름 크기입니다.
0x1c4버전REL 파일 형식의 버전 번호입니다.
0x204bss크기‘.bss’ 섹션의 크기입니다.
0x244relOffset재배치 테이블에 대한 오프셋입니다.
0x284임프 오프셋임프 테이블에 대한 오프셋.
0x2c4크기Imp 테이블의 크기(바이트)입니다.
0x301프롤로그섹션프롤로그가 관련된 섹션 테이블에 대한 인덱스입니다. 이 필드가 0이면 건너뜁니다.
0x311에필로그섹션에필로그가 관련된 섹션 테이블에 대한 인덱스입니다. 이 필드가 0이면 건너뜁니다.
0x321미해결섹션미해결이 관련된 섹션 테이블에 대한 인덱스입니다. 이 필드가 0이면 건너뜁니다.
0x331bss섹션bss가 상대적인 섹션 테이블에 대한 인덱스입니다. 런타임에 채워집니다!
0x344프롤로그_prolog 함수의 지정된 섹션으로 오프셋합니다.
0x384에필로그_epilog 함수의 지정된 섹션으로 오프셋합니다.
0x3c4미해결_unresolved 함수의 지정된 섹션으로 오프셋합니다.
0x404정렬버전 ≥ 2만. 2의 거듭제곱으로 표현되는 모든 섹션의 정렬 제약 조건
0x444bss정렬버전 ≥ 2만. 2의 거듭제곱으로 표현되는 모든 ‘.bss’ 섹션의 정렬 제약 조건
0x484크기 수정버전 ≥ 3만. REL이 OSLink 대신 OSLinkFixed와 연결된 경우 이 주소 뒤의 공간을 BSS와 같은 다른 용도로 사용할 수 있습니다.

섹션 정보 테이블

섹션 정보 테이블에는 각각 0x8바이트 길이의 numSections 항목이 포함되어 있습니다.

오프셋크기설명
0x030비트REL의 시작 부분에서 섹션까지의 오프셋입니다. 이것이 0이면 섹션은 초기화되지 않은 섹션(예: .bss)입니다.
0x3.61비트알려지지 않은.
0x3.71비트실행 플래그; 이것이 1이면 섹션이 실행 가능합니다.
0x44섹션의 길이(바이트)입니다. 0이면 이 항목을 건너뜁니다.
0x8다음 항목다음 항목

재배치 데이터

재배치 데이터는 0x8 바이트 구조의 하나 이상의 목록입니다. 각 목록의 끝은 특수 유형 코드 203으로 표시됩니다.

오프셋이름크기설명
0x0오프셋2이전 재배치에서 이 재배치로의 오프셋(바이트)입니다. 섹션의 첫 번째 재배치인 경우 섹션 시작을 기준으로 합니다.
0x2유형1재배치 유형입니다. 아래에서 묘사 되어진.
0x3섹션1재배치할 기호의 섹션입니다. 특수 재배치 유형 202의 경우 다음 재배치 항목이 적용되는 이 파일의 섹션 번호입니다.
0x4추가4섹션 시작을 기준으로 재배치할 기호의 오프셋(바이트)입니다. 이것은 main.dol에 대한 재배치 대신 절대 주소입니다.
0x8다음 항목다음 항목다음 항목

참고문헌

함께 보기