aspose.info
VI

REL - Tệp mô-đun có thể định vị lại

Cập nhật

Tập tin REL là gì?

Một tệp có phần mở rộng .rel có thể được sử dụng cho nhiều mục đích. Do đó, về mặt phân loại trò chơi, nó được gọi là tệp mô-đun có thể định vị lại được sử dụng bởi một số trò chơi Nintendo Wii, chẳng hạn như Brawl, Super Smash Bros và Mario Kart Wii. Nó bao gồm dữ liệu chơi trò chơi, bao gồm cả mô hình nhân vật và giai đoạn. Các tệp REL hoạt động tương tự như các tệp .DLL được sử dụng bởi Microsoft Windows.

Định dạng tệp REL

Ở định dạng tệp REL, tệp được chia thành nhiều phần, được nhóm theo quyền truy cập như nhau, ví dụ: chỉ đọc dữ liệu trong một phần, tất cả mã thực thi được đặt trong một phần khác, v.v. Tệp bắt đầu bằng phần tiêu đề, tiếp theo là:

  • Bảng chứa thông tin phần.
  • Các dữ liệu mặt cắt.
  • Thông tin di dời.

Tiêu đề tệp

Tệp bắt đầu với tiêu đề tối đa 0x4C byte:

Bù đắpKích thướcTên trườngMô tả
0x004idSố nhận dạng tùy ý. Phải là duy nhất trong số tất cả các REL được trò chơi sử dụng. Không được bằng 0.
0x044tiếp theoCon trỏ tới mô-đun tiếp theo, được điền vào thời gian chạy.
0x084trướcCon trỏ tới mô-đun trước đó, được điền vào thời gian chạy.
0x0c4numSectionsSố phần trong tệp.
0x104phầnInfoOffsetOffset đến đầu bảng phần.
0x144tênOffsetOffset thành chuỗi ASCII chứa tên của mô-đun. Có thể là NULL. Liên quan đến phần đầu của tệp REL.
0x184tênKích thướcKích thước của tên mô-đun tính bằng byte.
0x1c4phiên bảnSố phiên bản của định dạng tệp REL.
0x204bsSizeKích thước của phần ‘.bss’.
0x244relOffsetOffset vào bảng di chuyển.
0x284impOffsetOffset vào bảng imp.
0x2c4kích thước nhỏKích thước của bảng imp tính bằng byte.
0x301prologSectionLập chỉ mục vào bảng phần mà prolog có liên quan. Bỏ qua nếu trường này là 0.
0x311phần kếtLập chỉ mục vào bảng phần mà phần kết có liên quan đến. Bỏ qua nếu trường này là 0.
0x321phần chưa được giải quyếtChỉ mục vào bảng phần chưa được giải quyết có liên quan đến. Bỏ qua nếu trường này là 0.
0x331bssSectionLập chỉ mục vào bảng phần mà bss có liên quan. Đã điền vào thời gian chạy!
0x344mở đầuOffset vào phần được chỉ định của hàm _prolog.
0x384phần kếtOffset vào phần được chỉ định của hàm _epilog.
0x3c4chưa giải quyếtOffset vào phần được chỉ định của hàm _unresolved.
0x404căn chỉnhPhiên bản ≥ 2 thôi. Ràng buộc căn chỉnh trên tất cả các phần, được biểu thị bằng lũy thừa của 2.
0x444bssAlignPhiên bản ≥ 2 thôi. Ràng buộc căn chỉnh trên tất cả phần ‘.bss’, được biểu thị bằng lũy thừa của 2.
0x484fixSizePhiên bản ≥ 3 thôi. Nếu REL được liên kết với OSLinkFixed (thay vì OSLink), khoảng trống sau địa chỉ này có thể được sử dụng cho các mục đích khác (như BSS).

Bảng thông tin phần

Bảng thông tin phần chứa các mục nhập numSections với mỗi mục dài 0x8 byte:

Bù đắpKích thướcMô tả
0x030 bitOffset từ đầu REL đến phần. Nếu giá trị này bằng 0, phần này là phần chưa được khởi tạo (tức là .bss).
0x3.61 chútKhông xác định.
0x3.71 chútCờ thi hành; nếu đây là 1 thì phần này có thể thực thi được.
0x44Độ dài tính bằng byte của phần. Nếu giá trị này bằng 0, mục nhập này sẽ bị bỏ qua.
0x8Mục tiếp theoMục tiếp theo

Dữ liệu di dời

Dữ liệu di chuyển là một hoặc nhiều danh sách cấu trúc byte 0x8. Cuối mỗi danh sách được đánh dấu bằng mã loại đặc biệt 203:

Bù đắpTênKích thướcMô tả
0x0bù đắp2Bù đắp theo byte từ lần di chuyển trước sang lần di chuyển này. Nếu đây là lần di chuyển đầu tiên trong phần, điều này có liên quan đến phần bắt đầu.
0x2loại1Loại tái định cư. Được mô tả dưới đây.
0x3phần1Phần của biểu tượng để di chuyển chống lại. Đối với loại di chuyển đặc biệt 202, thay vào đó, đây là số của phần trong tệp này áp dụng cho các mục nhập di chuyển sau.
0x4thêm vào4Độ lệch theo byte của biểu tượng để định vị lại, so với phần đầu của phần của nó. Đây là một địa chỉ tuyệt đối thay vì di dời đối với main.dol.
0x8Mục tiếp theoMục tiếp theoMục tiếp theo

Người giới thiệu

Xem thêm