ปฏิบัติการได้

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา

ดัมพ์ฐานสิบหก ของ ตัวโหลดโหมดจริงที่ปฏิบัติการได้

ในการคำนวณรหัส เรียกทำงาน ไฟล์เรียกทำงานหรือโปรแกรมเรียกทำงานซึ่งบางครั้งเรียกง่ายๆ ว่า โปรแกรมเรียก ทำงานหรือไบนารีทำให้คอมพิวเตอร์ "ทำงานที่ระบุตามคำสั่ง ที่เข้ารหัส " [1]ตรงข้ามกับไฟล์ข้อมูลที่ต้อง ถูกตีความ ( parsed ) โดยโปรแกรมให้มีความหมาย

การตีความที่แน่นอนขึ้นอยู่กับการใช้งาน "คำแนะนำ" ตามธรรมเนียมแล้วหมายถึงคำสั่งรหัสเครื่อง สำหรับ CPUจริง [2]ในบางบริบท ไฟล์ที่มีคำสั่งสคริปต์ (เช่นbytecode ) อาจถือว่าสามารถเรียกใช้งานได้

การสร้างไฟล์ปฏิบัติการ

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

ภาษาระดับสูงถูกคอมไพล์เป็นไฟล์รหัสเครื่องที่เรียกใช้งานได้หรือรหัสเครื่องที่ไม่สามารถเรียกใช้งานได้ - ไฟล์วัตถุบางประเภท กระบวนการเทียบเท่าในซอร์สโค้ดภาษาแอสเซมบลีเรียกว่าแอสเซมบลี ไฟล์อ็อบเจ็กต์หลายไฟล์ถูกเชื่อมโยงเพื่อสร้างไฟล์ปฏิบัติการ ไฟล์อ็อบเจ็กต์ -- เรียกใช้งานได้หรือไม่ -- มักถูกจัดเก็บในรูปแบบคอนเทนเนอร์เช่นExecutable and Linkable Format (ELF) หรือPortable Executable (PE) ซึ่งเป็นระบบปฏิบัติการเฉพาะ [3]ซึ่งจะให้โครงสร้างแก่รหัสเครื่องที่สร้างขึ้น เช่น การแบ่งเป็นส่วนๆ เช่น.text(โค้ดปฏิบัติการ), .data (ตัวแปรโกลบอลและสแตติกเริ่มต้น) และ.rodata (ข้อมูลแบบอ่านอย่างเดียว เช่น ค่าคงที่และสตริง)

ไฟล์ที่ปฏิบัติการได้โดยทั่วไปยังรวมถึงระบบรันไทม์ซึ่งใช้คุณลักษณะภาษารันไทม์ (เช่นการจัดตารางงาน การจัดการข้อยกเว้น การเรียกตัวสร้างและตัวทำลายสแตติก ฯลฯ) และการโต้ตอบกับระบบปฏิบัติการ โดยเฉพาะอย่างยิ่ง การส่งอาร์กิวเมนต์ สภาพแวดล้อม และการส่งคืนสถานะการออกร่วมกับคุณสมบัติการเริ่มต้นและการปิดระบบอื่นๆ เช่น การปล่อยทรัพยากร เช่นตัวจัดการไฟล์ สำหรับ C ทำได้โดยการลิงก์ใน อ็อบเจ็กต์ crt0ซึ่งมีจุดเข้าใช้งานจริง และตั้งค่าและปิดระบบโดยการเรียกไลบรารีรันไทม์ [4]

ไฟล์ที่ปฏิบัติการได้ตามปกติจะมีรหัสเครื่องเพิ่มเติมที่สำคัญนอกเหนือจากที่สร้างขึ้นโดยตรงจากซอร์สโค้ดเฉพาะ ในบางกรณี ขอแนะนำให้ละเว้นสิ่งนี้ ตัวอย่างเช่น สำหรับการพัฒนาระบบฝังตัว หรือเพียงเพื่อให้เข้าใจว่าการคอมไพล์ การเชื่อมโยง และการโหลดทำงานอย่างไร ใน C สามารถทำได้โดยละเว้นรันไทม์ปกติ และแทนที่จะระบุสคริปต์ตัวเชื่อมโยง ซึ่งจะสร้างจุดเข้าใช้งานและจัดการการเริ่มต้นและการปิดระบบ เช่น การเรียกmainเพื่อเริ่มต้นและส่งคืนสถานะการออกไปยังเคอร์เนลในตอนท้าย [5]

การดำเนินการ

เพื่อให้ระบบดำเนินการได้ (เช่น ระบบปฏิบัติการเฟิร์มแวร์หรือ ตัวโหลดการ บูต ) ไฟล์สั่งการต้องสอดคล้องกับApplication Binary Interface (ABI) ของระบบ [6]ในอินเทอร์เฟซอย่างง่าย ไฟล์จะถูกดำเนินการโดยการโหลดลงในหน่วยความจำและข้ามไปที่จุดเริ่มต้นของพื้นที่ที่อยู่และดำเนินการจากที่นั่น ในอินเทอร์เฟซที่ซับซ้อนมากขึ้น ไฟล์เรียกทำงานจะมีข้อมูลเมตาเพิ่มเติมที่ระบุจุดเข้า ใช้งานแยก ต่างหาก ตัวอย่างเช่น ใน ELF จุดเริ่มต้นจะถูกระบุในe_entryฟิลด์ของส่วนหัว ซึ่งระบุที่อยู่หน่วยความจำ (เสมือน) ที่จะเริ่มดำเนินการ ใน GCC ( GNU Compiler Collection ) ฟิลด์นี้ถูกกำหนดโดยตัวเชื่อมโยงตาม_startสัญลักษณ์.

ดูเพิ่มเติม

อ้างอิง

  1. ^ "ปฏิบัติการได้" . พจนานุกรม ออนไลน์ของ Merriam-Webster เมอร์เรียม-เว็บสเตอร์ สืบค้นเมื่อ2008-07-19 .
  2. ^ "คำแนะนำเครื่อง" . กี๊ กส์ฟอร์กีกส์ . 2015-11-03 . สืบค้นเมื่อ2019-09-18 .
  3. ^ "บทที่ 4: ไฟล์อ็อบเจ็กต์" . refspecs.linuxbase.org _ สืบค้นเมื่อ2019-09-18 .
  4. ^ ฟิชเชอร์, ทิม. "รายการนามสกุลไฟล์ที่ปฏิบัติการได้" . lifewire.com . สืบค้นเมื่อ2019-09-18 .
  5. แมคเคลลาร์, เจสสิก้า (2010-03-16). "สวัสดีจากโลกที่ปราศจาก libc! (ตอนที่ 1)" .
  6. ↑ โบเลน, ไมเคิล ( 2019-05-15 ). "ไฟล์ ELF 101 ไฟล์บน Linux: การทำความเข้าใจและการวิเคราะห์ - Linux..." Linux Audit สืบค้นเมื่อ2019-09-18 .

ลิงค์ภายนอก