aspose.info
TH

REL - ไฟล์โมดูลที่ย้ายตำแหน่งได้

อัปเดตเมื่อ

ไฟล์ REL คืออะไร??

ไฟล์ที่มีนามสกุล .rel สามารถใช้เพื่อวัตถุประสงค์หลายประเภท ดังนั้นในแง่ของการจัดประเภทเกม จึงเรียกว่าไฟล์โมดูลที่ย้ายตำแหน่งได้ซึ่งใช้โดยเกม Nintendo Wii บางเกม เช่น Brawl, Super Smash Bros และ Mario Kart Wii ประกอบด้วยข้อมูลการเล่นเกม รวมถึงโมเดลตัวละครและสเตจ ไฟล์ REL ทำงานคล้ายกับไฟล์ .DLL ที่ใช้โดย Microsoft Windows

รูปแบบไฟล์ REL

ในรูปแบบไฟล์ REL ไฟล์จะถูกแบ่งออกเป็นหลายส่วน จัดกลุ่มตามสิทธิ์การเข้าถึง เช่น อ่านข้อมูลอย่างเดียวในส่วนเดียว โค้ดปฏิบัติการทั้งหมดจะอยู่ในอีกส่วน เป็นต้น ไฟล์เริ่มต้นด้วยส่วนหัว ตามด้วย:

  • ตารางที่มีข้อมูลส่วน
  • ข้อมูลส่วน
  • ข้อมูลการย้ายถิ่นฐาน

ส่วนหัวของไฟล์

ไฟล์เริ่มต้นด้วยส่วนหัวสูงสุด 0x4C ไบต์:

ออฟเซ็ตขนาดชื่อฟิลด์คำอธิบาย
0x004รหัสหมายเลขประจำตัวโดยพลการ ต้องไม่ซ้ำกันใน REL ทั้งหมดที่ใช้โดยเกม ต้องไม่เป็น 0
0x044ถัดไปชี้ไปที่โมดูลถัดไป เติมเมื่อรันไทม์
0x084ก่อนหน้าตัวชี้ไปยังโมดูลก่อนหน้า เติมเมื่อรันไทม์
0x0c4จำนวนส่วนจำนวนส่วนในไฟล์
0x104ส่วนInfoOffsetชดเชยกับจุดเริ่มต้นของตารางส่วน
0x144ชื่อออฟเซ็ตออฟเซ็ตเป็นสตริง ASCII ที่มีชื่อของโมดูล อาจเป็นโมฆะ สัมพันธ์กับจุดเริ่มต้นของไฟล์ REL
0x184ชื่อขนาดขนาดของชื่อโมดูลเป็นไบต์
0x1c4รุ่นหมายเลขเวอร์ชันของรูปแบบไฟล์ REL
0x204bssขนาดขนาดของส่วน ‘.bss’
0x244relOffsetออฟเซ็ตกับตารางการย้ายถิ่นฐาน
0x284อิมออฟเซ็ตออฟเซ็ตกับตารางเปรต
0x2c4เปรตขนาดขนาดของตารางเปรตเป็นไบต์
0x301อารัมภบทส่วนจัดทำดัชนีลงในตารางส่วนที่อารัมภบทสัมพันธ์ ข้ามถ้าฟิลด์นี้เป็น 0
0x311บทส่งท้ายSectionจัดทำดัชนีลงในตารางส่วนที่บทส่งท้ายสัมพันธ์กัน ข้ามถ้าฟิลด์นี้เป็น 0
0x321ยังไม่ได้แก้ไขส่วนจัดทำดัชนีลงในตารางส่วนที่ยังไม่ได้แก้ไขซึ่งสัมพันธ์กับ ข้ามถ้าฟิลด์นี้เป็น 0
0x331bssส่วนจัดทำดัชนีลงในตารางส่วนที่ bss สัมพันธ์กัน เต็มเมื่อรันไทม์!
0x344อารัมภบทออฟเซ็ตในส่วนที่ระบุของฟังก์ชัน _prolog
0x384บทส่งท้ายออฟเซ็ตในส่วนที่ระบุของฟังก์ชัน _epilog
0x3c4ยังไม่ได้แก้ไขออฟเซ็ตในส่วนที่ระบุของฟังก์ชัน _unresolved
0x404จัดเวอร์ชัน ≥ 2 เท่านั้น ข้อจำกัดการจัดตำแหน่งในทุกส่วน แสดงเป็นยกกำลัง 2
0x444bssAlignเวอร์ชัน ≥ 2 เท่านั้น ข้อจำกัดการจัดตำแหน่งในส่วน ‘.bss’ ทั้งหมด ซึ่งแสดงเป็นยกกำลัง 2
0x484แก้ไขขนาดเวอร์ชัน ≥ 3 เท่านั้น หาก REL เชื่อมโยงกับ OSLinkFixed (แทนที่จะเป็น OSLink) ช่องว่างหลังที่อยู่นี้สามารถใช้เพื่อวัตถุประสงค์อื่นได้ (เช่น BSS)

ตารางข้อมูลส่วน

ตารางข้อมูลส่วนประกอบด้วยรายการ numSections แต่ละรายการมีความยาว 0x8 ไบต์:

ออฟเซ็ตขนาดคำอธิบาย
0x030 บิตชดเชยจากจุดเริ่มต้นของ REL ไปยังส่วน ถ้าค่านี้เป็นศูนย์ แสดงว่าส่วนนี้เป็นส่วนที่ไม่ได้กำหนดค่าเริ่มต้น (เช่น .bss)
0x3.61 บิตไม่ทราบ
0x3.71 บิตแฟล็กปฏิบัติการ หากนี่คือ 1 ส่วนนั้นสามารถเรียกใช้งานได้
0x44ความยาวเป็นไบต์ของส่วน หากเป็นศูนย์ แสดงว่ารายการนี้ถูกข้ามไป
0x8รายการถัดไปรายการถัดไป

ข้อมูลการย้ายถิ่นฐาน

ข้อมูลการย้ายตำแหน่งคือรายการโครงสร้าง 0x8 ไบต์อย่างน้อยหนึ่งรายการ จุดสิ้นสุดของแต่ละรายการถูกทำเครื่องหมายด้วยรหัสประเภทพิเศษ 203:

ออฟเซ็ตชื่อขนาดคำอธิบาย
0x0ชดเชย2ออฟเซ็ตเป็นไบต์จากการย้ายตำแหน่งครั้งก่อนไปยังตำแหน่งนี้ หากนี่คือการย้ายตำแหน่งครั้งแรกในส่วน จะสัมพันธ์กับการเริ่มต้นส่วน
0x2พิมพ์1ประเภทการย้ายถิ่นฐาน อธิบายไว้ด้านล่าง.
0x3ส่วน1ส่วนของสัญลักษณ์ที่จะย้ายที่ต่อต้าน สำหรับประเภทการย้ายตำแหน่งพิเศษ 202 จะใช้แทนหมายเลขของส่วนในไฟล์นี้ซึ่งใช้กับรายการการย้ายตำแหน่งต่อไปนี้
0x4เพิ่ม4ออฟเซ็ตเป็นไบต์ของสัญลักษณ์ที่จะย้ายตำแหน่งเมื่อเทียบกับจุดเริ่มต้นของส่วน นี่คือที่อยู่จริงสำหรับการย้ายที่อยู่แทน main.dol
0x8รายการถัดไปรายการถัดไปรายการถัดไป

อ้างอิง

ดูเพิ่มเติม