ฉันไม่เคยเข้าใจชัดเจนว่า ABI คืออะไร โปรดอย่านำฉันไปที่บทความ Wikipedia ถ้าฉันเข้าใจได้ฉันจะไม่โพสต์ข้อความยาว ๆ ที่นี่
นี่คือความคิดของฉันเกี่ยวกับอินเทอร์เฟซต่าง ๆ :
รีโมตทีวีเป็นอินเทอร์เฟซระหว่างผู้ใช้กับทีวี เป็นนิติบุคคลที่มีอยู่ แต่ไร้ประโยชน์ (ไม่มีฟังก์ชั่นใด ๆ ) ด้วยตัวเอง ฟังก์ชั่นทั้งหมดสำหรับแต่ละปุ่มบนรีโมทนั้นมีการใช้งานในเครื่องรับโทรทัศน์
อินเทอร์เฟซ:เป็นเลเยอร์ "เอนทิตีที่มีอยู่" ระหว่าง
functionality
และconsumer
ของฟังก์ชันการทำงานนั้น ส่วนต่อประสานไม่ได้ทำอะไรเลย มันแค่เรียกใช้ฟังก์ชั่นที่อยู่ข้างหลังตอนนี้ขึ้นอยู่กับผู้ใช้ที่มีอินเทอร์เฟซชนิดต่าง ๆ
Command Line Interface (CLI)คำสั่งเป็นเอนทิตีที่มีอยู่ผู้บริโภคคือผู้ใช้และหน้าที่การใช้งานอยู่ด้านหลัง
functionality:
ฟังก์ชั่นซอฟต์แวร์ของฉันที่แก้จุดประสงค์บางอย่างที่เราอธิบายอินเตอร์เฟซนี้
existing entities:
คำสั่ง
consumer:
ผู้ใช้งานหน้าต่างส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI)ปุ่มและอื่น ๆ เป็นสิ่งที่มีอยู่และอีกครั้งที่ผู้บริโภคคือผู้ใช้
functionality:
ฟังก์ชั่นซอฟต์แวร์ของฉันที่แก้ปัญหาที่เราอธิบายอินเตอร์เฟซนี้
existing entities:
หน้าต่างปุ่ม ฯลฯ
consumer:
ผู้ใช้งานแอปพลิเคชัน Application Interface Interface (API) (หรือให้ถูกต้องมากขึ้น) อินเทอร์เฟซ (ในการเขียนโปรแกรมแบบอินเทอร์แอคทีฟ) เป็นเอนทิตีที่มีอยู่ผู้บริโภคที่นี่คือโปรแกรมอื่นที่ไม่ใช่ผู้ใช้
functionality:
ฟังก์ชั่นซอฟต์แวร์ของฉันที่แก้ปัญหาที่เราอธิบายอินเตอร์เฟซนี้
existing entities:
ฟังก์ชั่นการเชื่อมต่อ (อาร์เรย์ของฟังก์ชั่น)
consumer:
โปรแกรมอื่น / แอปพลิเคชันApplication Binary Interface (ABI)นี่คือที่ที่ปัญหาของฉันเริ่มต้น
functionality:
???
existing entities:
???
consumer:
???
- ฉันเขียนซอฟต์แวร์เป็นภาษาต่าง ๆ และมีอินเทอร์เฟซต่าง ๆ (CLI, GUI และ API) แต่ฉันไม่แน่ใจว่าฉันได้ให้ ABI ใด ๆ หรือไม่
ABIs ครอบคลุมรายละเอียดเช่น
- ชนิดข้อมูลขนาดและการจัดตำแหน่ง
- แบบแผนการเรียกซึ่งควบคุมวิธีการส่งผ่านข้อโต้แย้งของฟังก์ชันและการคืนค่า
- หมายเลขการโทรของระบบและวิธีที่แอปพลิเคชันควรทำการโทรของระบบไปยังระบบปฏิบัติการ
ABIs อื่น ๆ สร้างรายละเอียดที่เป็นมาตรฐานเช่น
- mangling ชื่อ C ++
- การเผยแพร่ข้อยกเว้นและ
- แผนการโทรระหว่างคอมไพเลอร์บนแพลตฟอร์มเดียวกัน แต่ไม่ต้องการความเข้ากันได้ข้ามแพลตฟอร์ม
ใครต้องการรายละเอียดเหล่านี้ กรุณาอย่าพูดระบบปฏิบัติการ ฉันรู้ว่าการเขียนโปรแกรมการชุมนุม ฉันรู้ว่าการเชื่อมโยงและการโหลดทำงานอย่างไร ฉันรู้ว่าสิ่งที่เกิดขึ้นภายใน
เหตุใดชื่อ C ++ จึงสร้างชื่อเข้ามา ฉันคิดว่าเรากำลังพูดถึงในระดับไบนารี ทำไมภาษามา?
อย่างไรก็ตามฉันได้ดาวน์โหลด[PDF] System V Application Binary Interface Edition 4.1 (1997-03-18)เพื่อดูว่ามันประกอบด้วยอะไรบ้าง ส่วนใหญ่มันไม่สมเหตุสมผลเลย
ทำไมมันมีสองบท (ที่ 4 และที่ 5) เพื่ออธิบายรูปแบบไฟล์เอลฟ์ ? ในความเป็นจริงเหล่านี้เป็นเพียงสองบทที่สำคัญของข้อกำหนดที่ บทที่เหลือเป็น "ตัวประมวลผลเฉพาะ" อย่างไรก็ตามฉันคิดว่ามันเป็นหัวข้อที่แตกต่างอย่างสิ้นเชิง โปรดอย่าพูดว่าข้อมูลจำเพาะรูปแบบไฟล์ของ ELF คือ ABI ไม่มีคุณสมบัติที่จะเป็นอินเทอร์เฟซตามข้อกำหนด
ฉันรู้ว่าเนื่องจากเรากำลังพูดคุยในระดับต่ำมันจะต้องเฉพาะเจาะจงมาก แต่ฉันไม่แน่ใจว่าเป็นเฉพาะ "ชุดคำสั่งสถาปัตยกรรม (ISA)" อย่างไร
ฉันจะหา ABI ของ Microsoft Windows ได้จากที่ใด
ดังนั้นนี่เป็นข้อความค้นหาที่สำคัญที่ทำให้ฉันรำคาญ