กลับไปหน้าบทความ

อ่าน 3 นาที

กาแฟ

รูป แบบไฟล์ Common Object File Format ( COFF ) เป็น รูปแบบไฟล์ สำหรับ ไฟล์ ปฏิบัติการ ไฟล์ โค้ดวัตถุ และ ไฟล์ ไลบรารีที่ใช้ร่วมกัน ซึ่ง ใช้ใน ระบบ Unix รูป แบบนี้ถูกนำมาใช้ใน Unix...

กาแฟ

กาแฟ
นามสกุลไฟล์
ไม่มี, .o , .obj , .lib [ 1 ]
สื่อประเภทอินเทอร์เน็ตแอปพลิเคชัน/x-coff, แอปพลิเคชัน/x-coffexec
เลขมหัศจรรย์
พัฒนาโดยบริษัท เอทีแอนด์ที คอร์ปอเรชั่น
ประเภทของรูปแบบไบนารี , ไฟล์ปฏิบัติการ , อ็อบเจ็กต์ , ไลบรารีที่ใช้ร่วมกัน
ขยายไปยังXCOFF , ECOFF , ไฟล์ปฏิบัติการแบบพกพา , รูปแบบไฟล์ปฏิบัติการและเชื่อมโยงได้

รูปแบบไฟล์ Common Object File Format ( COFF ) เป็นรูปแบบไฟล์สำหรับไฟล์ปฏิบัติการไฟล์โค้ดวัตถุและ ไฟล์ ไลบรารีที่ใช้ร่วมกัน ซึ่ง ใช้ใน ระบบ Unix รูป แบบนี้ถูกนำมาใช้ในUnix System Vแทนที่ รูปแบบ a.out ที่เคยใช้มาก่อน และเป็นพื้นฐานสำหรับข้อกำหนดเพิ่มเติม เช่นXCOFFและECOFFก่อนที่จะถูกแทนที่ด้วยELFซึ่งถูกนำมาใช้ในSVR4 COFF และรูปแบบต่างๆ ของมันยังคงถูกใช้ใน ระบบ ที่คล้าย Unix บาง ระบบ ในMicrosoft Windows ( Portable Executable ) ใน สภาพแวดล้อม UEFIและในระบบพัฒนาแบบฝังตัวบางระบบ

ประวัติศาสตร์

รูปแบบไฟล์ออบเจ็กต์ Unix ดั้งเดิมa.outไม่สามารถรองรับไลบรารีที่ใช้ร่วมกันการระบุรูปแบบภายนอก หรือการเชื่อมโยงที่อยู่โดยตรงได้อย่างเพียงพอ เนื่องจากการพัฒนาของ ระบบ ที่คล้าย Unixยังคงดำเนินต่อไปทั้งภายในและภายนอกAT&Tจึงได้มีการคิดค้นวิธีแก้ปัญหาต่างๆ สำหรับปัญหาเหล่านี้และปัญหาอื่นๆ ขึ้นมา

COFF ถูกนำมาใช้ครั้งแรกในปี 1983 ในระบบปฏิบัติการ UNIX System V ของ AT&T สำหรับ แพลตฟอร์ม 32 บิตที่ ไม่ใช่ VAXเช่น3B20 การปรับปรุงจากรูปแบบ a.outเดิมของ AT&T ประกอบด้วยส่วนต่างๆ ที่กำหนดเอง การประกาศโปรเซสเซอร์อย่างชัดเจน และการเชื่อมโยงที่อยู่แบบชัดเจน

อย่างไรก็ตาม การออกแบบ COFF นั้นมีข้อจำกัดมากเกินไปและไม่ได้ระบุรายละเอียดอย่างครบถ้วน มีข้อจำกัดเกี่ยวกับจำนวนส่วน ความยาวของชื่อส่วน และจำนวนไฟล์ต้นฉบับที่รวมอยู่ นอกจากนี้ ข้อมูล การดีบักเชิงสัญลักษณ์ยังไม่สามารถรองรับภาษาโปรแกรม ในโลกแห่งความเป็นจริง เช่น ภาษา Cยิ่งไปกว่านั้นยังไม่สามารถรองรับภาษาที่ใหม่กว่า เช่นC++และสถาปัตยกรรมชุดคำสั่ง ใหม่ๆ ได้ อีกด้วย ดังนั้น การใช้งาน COFF ในโลกแห่งความเป็นจริงทั้งหมดจึงเป็นการละเมิดมาตรฐานอย่างหลีกเลี่ยงไม่ได้ ส่งผลให้เกิดส่วนขยายของ COFF มากมายIBMใช้ รูปแบบ XCOFFใน ระบบปฏิบัติการ AIX ; DEC , SGIและบริษัทอื่นๆ ใช้ECOFF ; และ พอร์ต SysVและชุดเครื่องมือต่างๆ ที่มุ่งเป้าไปที่การพัฒนาแบบฝังตัวต่างก็สร้างรูปแบบที่แตกต่างกันออกไป ซึ่งไม่เข้ากันกับ มาตรฐาน

เมื่อมีการเปิดตัว SVR4 บริษัท AT&T ได้เปลี่ยนมาใช้รูปแบบไฟล์ที่สามารถเรียกใช้งานได้และเชื่อมโยงได้ (ELF) แทน COFF

แม้ว่าเวอร์ชันขยายของ COFF จะยังคงถูกใช้สำหรับแพลตฟอร์ม Unix และ Unix-like บางแพลตฟอร์ม โดยเฉพาะอย่างยิ่งในระบบฝังตัวแต่การใช้งานรูปแบบ COFF ที่แพร่หลายที่สุดในปัจจุบันอาจเป็น รูปแบบ Portable Executable (PE) ของMicrosoftซึ่งพัฒนาขึ้นสำหรับWindows NTรูปแบบ PE (บางครั้งเขียนว่า PE/COFF) ใช้ส่วนหัว COFF สำหรับไฟล์ออบเจ็กต์และเป็นส่วนประกอบของส่วนหัว PE สำหรับไฟล์ปฏิบัติการ[ 3 ]

คุณสมบัติ

ข้อดีหลักของ COFF เมื่อเทียบกับa.outคือการเพิ่มส่วนต่างๆ ที่มีชื่อในไฟล์ออบเจ็กต์ ไฟล์ออบเจ็กต์แต่ละไฟล์สามารถมีจำนวนและประเภทของส่วนต่างๆ ที่แตกต่างกันได้

ข้อมูลการดีบักเชิงสัญลักษณ์

ข้อมูลการดีบักเชิงสัญลักษณ์ของ COFF ประกอบด้วยชื่อเชิงสัญลักษณ์ ( สตริง ) สำหรับฟังก์ชันและตัวแปรของโปรแกรม และข้อมูลหมายเลขบรรทัด ซึ่งใช้สำหรับการตั้งเบรกพอยต์และการติดตามการทำงาน

ชื่อเชิงสัญลักษณ์จะถูกจัดเก็บไว้ในตารางสัญลักษณ์ COFF แต่ละ รายการใน ตารางสัญลักษณ์ประกอบด้วยชื่อ คลาสการจัดเก็บ ประเภท ค่า และหมายเลขส่วน ชื่อสั้น (ไม่เกิน 8 ตัวอักษร) จะถูกจัดเก็บโดยตรงในตารางสัญลักษณ์ ส่วนชื่อที่ยาวกว่าจะถูกจัดเก็บเป็นค่าออฟเซ็ตในตารางสตริงที่ส่วนท้ายของออบเจ็กต์ COFF

คลาสการจัดเก็บข้อมูลอธิบายถึงเอนทิตีประเภทที่สัญลักษณ์นั้นแทน และอาจรวมถึงตัวแปรภายนอก (C_EXT), ตัวแปรอัตโนมัติ (สแต็ก) (C_AUTO), ตัวแปรลงทะเบียน (C_REG), ฟังก์ชัน (C_FCN) และอื่นๆ อีกมากมาย ประเภทของสัญลักษณ์อธิบายถึงการตีความค่าของเอนทิตีสัญลักษณ์ และรวมถึงค่าสำหรับประเภทข้อมูล C ทั้งหมด

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

โปรดทราบว่า COFF ไม่สามารถแสดงหมายเลขบรรทัดหรือสัญลักษณ์การดีบักสำหรับซอร์สโค้ดที่รวมอยู่ได้เหมือนกับไฟล์เฮดเดอร์ ทำให้ข้อมูลการดีบักของ COFF แทบจะไร้ประโยชน์หากไม่มีส่วนขยายที่ไม่เข้ากัน

ที่อยู่เสมือนสัมพัทธ์

เมื่อสร้างไฟล์ COFF ขึ้นมา โดยปกติแล้วจะไม่ทราบว่าไฟล์นั้นจะถูกโหลดไปยังตำแหน่งใดในหน่วยความจำที่อยู่เสมือนที่ไบต์แรกของไฟล์จะถูกโหลดเรียกว่า ที่อยู่ฐานของภาพ (image base address ) ส่วนที่เหลือของไฟล์ไม่จำเป็นต้องถูกโหลดในบล็อกที่ต่อเนื่องกัน แต่จะถูกโหลดในส่วนต่างๆ กัน

ที่อยู่เสมือนสัมพัทธ์ (RVA) ไม่ควรสับสนกับที่อยู่เสมือนมาตรฐาน ที่อยู่เสมือนสัมพัทธ์คือที่อยู่เสมือนของวัตถุจากไฟล์เมื่อโหลดเข้าสู่หน่วยความจำแล้ว ลบด้วยที่อยู่ฐานของภาพไฟล์ หากไฟล์ถูกแมปจากดิสก์ไปยังหน่วยความจำอย่างแท้จริง RVA จะเหมือนกับค่าออฟเซ็ตในไฟล์ แต่ในความเป็นจริงแล้วกรณีนี้ค่อนข้างผิดปกติ

โปรดทราบว่าคำว่า RVA นั้นใช้กับวัตถุในไฟล์ภาพเท่านั้น เมื่อโหลดเข้าสู่หน่วยความจำแล้ว จะมีการเพิ่มที่อยู่ฐานของภาพ และจะใช้ VA ทั่วไป

ปัญหา

ส่วนหัวของไฟล์ COFF จะเก็บวันที่และเวลาที่สร้างไฟล์ออบเจ็กต์เป็นจำนวนเต็มไบนารี 32 บิต ซึ่งแสดงจำนวนวินาทีตั้งแต่ยุค Unix 1 มกราคม 1970 00:00:00  UTCดังนั้น วันที่ที่เกิดขึ้นหลังวันที่ 19 มกราคม 2038 จึงไม่สามารถจัดเก็บในรูปแบบนี้ได้ ( ปัญหาปี 2038 ) [ 4 ] : 11–4

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • ข้อมูลจำเพาะ MIPS COFF
  • Gircys, Gintaras (1988), การทำความเข้าใจและการใช้ COFF , O'Reilly and Associates, ISBN 0-937175-31-5
  • บริษัท ไมโครซอฟต์ (2006b), รูปแบบไฟล์ออบเจ็กต์ทั่วไป (COFF) (ฉบับแก้ไข 4.1), เก็บถาวรจากต้นฉบับเมื่อ 16 ธันวาคม 2006 , เรียกดูเมื่อ 2 มิถุนายน 2007
  • "ประวัติโดยย่อของรูปแบบไฟล์ออบเจ็กต์ TI"เก็บถาวรจากต้นฉบับเมื่อวันที่ 26 พฤศจิกายน 2023
  • "รูปแบบไฟล์ออบเจ็กต์ทั่วไป" (PDF)บริษัทเท็กซัส อินสตรูเมนต์
  • เจาะลึกรายละเอียดเกี่ยวกับรูปแบบไฟล์ Win32 Portable Executable File Formatและเอกสารรูปแบบ PEจาก Microsoft
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=COFF&oldid=1360504398 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ กาแฟ

รูป แบบไฟล์ Common Object File Format ( COFF ) เป็น รูปแบบไฟล์ สำหรับ ไฟล์ ปฏิบัติการ ไฟล์ โค้ดวัตถุ และ ไฟล์ ไลบรารีที่ใช้ร่วมกัน ซึ่ง ใช้ใน ระบบ Unix รูป แบบนี้ถูกนำมาใช้ใน Unix...

ประวัติศาสตร์

รูปแบบไฟล์ออบเจ็กต์ Unix ดั้งเดิม a.out ไม่สามารถรองรับ ไลบรารีที่ใช้ร่วมกัน การระบุรูปแบบภายนอก หรือการเชื่อมโยงที่อยู่โดยตรงได้อย่างเพียงพอ เนื่องจากการพัฒนาของ ระบบ ที่คล้าย Unix ยังคงดำเนินต่อไปทั้งภายในและภายนอก AT&T จึงได้มีการคิดค้นวิธีแก้ปัญหาต่างๆ...

คุณสมบัติ

ข้อดีหลักของ COFF เมื่อเทียบกับ a.out คือการเพิ่มส่วนต่างๆ ที่มีชื่อในไฟล์ออบเจ็กต์ ไฟล์ออบเจ็กต์แต่ละไฟล์สามารถมีจำนวนและประเภทของส่วนต่างๆ ที่แตกต่างกันได้

ข้อมูลการดีบักเชิงสัญลักษณ์

ข้อมูลการดีบักเชิงสัญลักษณ์ของ COFF ประกอบด้วยชื่อเชิงสัญลักษณ์ ( สตริง ) สำหรับฟังก์ชันและตัวแปรของโปรแกรม และข้อมูลหมายเลขบรรทัด ซึ่งใช้สำหรับการตั้งเบรกพอยต์และ การติดตาม การทำงาน