ตัวคอมไพเลอร์ไบนารี
คอมไพเลอร์ไบนารีคือคอมไพเลอร์ที่รับไฟล์ไบนารีที่สามารถเรียกใช้งานได้ เป็นอินพุต วิเคราะห์โครงสร้าง ใช้การแปลงและการเพิ่มประสิทธิภาพ และส่งออกไฟล์ไบนารีที่สามารถเรียกใช้งานได้ที่ได้รับการปรับให้เหมาะสมใหม่[ 1 ]
พื้นฐานของแนวคิดการคอมไพล์ไบนารีใหม่ได้รับการวางรากฐานโดยGary Kildall [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ]ด้วยการพัฒนาตัวแปลรหัสแอสเซมบลี ที่ปรับให้เหมาะสม XLT86ในปี 1981 [ 4 ] [ 9 ] [ 10 ] [ 11 ]
ดูเพิ่มเติม
- ตัวปรับแต่งไบนารี (ไบนารีเป็นไบนารี)
- ตัวแปลงเลขฐานสอง (เลขฐานสองเป็นเลขฐานสอง)
- โปรแกรมถอดรหัส (แปลงไบนารีเป็นซอร์สโค้ด)
- โปรแกรมถอดรหัส (จากไบนารีเป็นซอร์สโค้ด)
- โปรแกรมคอมไพล์แบบไดนามิก (ไบนารีเป็นไบนารี)
- ตัวแปลงโค้ด (จากซอร์สโค้ดหนึ่งไปยังอีกซอร์สโค้ดหนึ่ง)
- Honeywell Liberator (รันโปรแกรมIBM 1401 บน Honeywell H200 )
- ↑ Mudge, Trevor; Reinhardt, Steve; Tyson, Gary. "การศึกษาเกี่ยวกับการคอมไพล์ไบนารีและการปรับปรุงคอมไพเลอร์/สถาปัตยกรรมแบบผสมผสาน" . umich.edu . มหาวิทยาลัยมิชิแกน (UM). เก็บถาวรจากต้นฉบับเมื่อ 2012-07-23 . สืบค้นเมื่อ2012-07-23 .
- ↑ Kildall, Gary Arlen (พฤษภาคม 1972). การเพิ่มประสิทธิภาพการแสดงออกทั่วโลกในระหว่างการคอมไพล์ (วิทยานิพนธ์ปริญญาเอก). ซีแอตเติล, วอชิงตัน, สหรัฐอเมริกา: มหาวิทยาลัยวอชิงตัน , กลุ่มวิทยาศาสตร์คอมพิวเตอร์. วิทยานิพนธ์เลขที่ 20506, รายงานทางเทคนิคเลขที่ 72-06-02.
- ↑ Kildall, Gary Arlen (1973-10-01). "แนวทางที่เป็นหนึ่งเดียวสำหรับการเพิ่มประสิทธิภาพโปรแกรมทั่วโลก" (PDF) . รายงานการประชุมสัมมนาประจำปีครั้งที่ 1 ของ ACM SIGACT-SIGPLAN เรื่องหลักการของภาษาโปรแกรม - POPL '73 . หน้า194– 206. doi : 10.1145/512927.512945 . hdl : 10945/42162 . S2CID 10219496 . เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 2017-06-29 . สืบค้นเมื่อ2006-11-20 . ()
- 1 2 Freiberger, Paul (19 ตุลาคม 1981). "โปรแกรมแปลทำแบบตรงตัว - และบางครั้งก็อยู่ในบริบท" . InfoWorld - ข่าวสำหรับผู้ใช้ไมโครคอมพิวเตอร์ . ส่วนพิเศษ: ความเข้ากันได้ของคอมพิวเตอร์. เล่ม3, ฉบับที่22. Popular Computing, Inc.หน้า19. ISSN 0199-6649 . สืบค้นเมื่อ15 มกราคม 2020 .
[…] "เว้นแต่คุณจะมีรูปแบบการแปลที่คำนึงถึงลักษณะเฉพาะของไมโครโปรเซสเซอร์เป้าหมาย ไม่มีทางที่โปรแกรมแปลอัตโนมัติจะทำงานได้" Daniel Davis โปรแกรมเมอร์จาก
Digital Research
อธิบาย "คุณจะลงเอยด้วย
การแปลง
แบบตรงตัว " […] แม้จะมีข้อจำกัดทั้งหมดเหล่านี้ แต่ก็มีความก้าวหน้าเกิดขึ้นเมื่อเร็ว ๆ นี้ในการพัฒนาโปรแกรมแปล โดยเฉพาะอย่างยิ่ง Digital Research ได้เปิดตัวโปรแกรมแปลรหัสแอสเซมบลี 8 บิตเป็น 16 บิต จากการวิจัยของ
แกรี่ คิลดอล ประธาน
บริษัท Digital Research พบว่า XLT86
มี
ความก้าวหน้ากว่าเทคโนโลยีซอฟต์แวร์ตัวแปลโค้ดที่มีอยู่ก่อนหน้านี้ เช่นเดียวกับ
Trans
ของ
Sorcim
และ
Convert 86
ของ
Intel
แพ็กเกจของคิลดอลจะแปลโค้ดภาษาแอสเซมบลีจาก ไมโครโปรเซสเซอร์
8080
ไปยัง
8086
อย่างไรก็ตาม คิลดอลได้ประยุกต์ใช้ เทคนิค
การวิเคราะห์การไหลของข้อมูลโดย
รวม ซึ่งคำนึงถึงข้อเสียเปรียบที่สำคัญบางประการของตัวแปลอื่นๆ กระบวนการนี้จะวิเคราะห์การใช้งานรีจิสเตอร์และแฟล็กในส่วนต่างๆ ของโค้ด 8080 เพื่อกำจัด
โค้ดที่ไม่จำเป็น
ตามที่เดวิส โปรแกรมเมอร์ของ Digital Research กล่าวไว้ อัลกอริทึมที่คิลดอลใช้ช่วยให้ตัวแปลสามารถพิจารณาบริบทขณะที่แปลโปรแกรมได้ จนถึงตอนนี้ ปัญหาสำคัญอย่างหนึ่งของโปรแกรมตัวแปลใดๆ ก็คือซอฟต์แวร์ไม่สามารถทำอะไรได้มากกว่าการแปลงตัวอักษร หากตัวแปลใหม่ของ Digital Research พัฒนาเทคโนโลยีไปถึงจุดที่สามารถพิจารณาบริบทได้ ก็อาจจะมีซอฟต์แวร์ตัวแปลเพิ่มมากขึ้นในตลาดไมโครคอมพิวเตอร์
- ↑ Wharton, John Harrison (1994-08-01). "Gary Kildall ผู้บุกเบิกอุตสาหกรรม เสียชีวิตเมื่ออายุ 52 ปี: สร้างภาษาไมโครคอมพิวเตอร์และระบบปฏิบัติการดิสก์ตัวแรก" . รายงานไมโครโปรเซสเซอร์ . 8 (10). MicroDesign Resources Inc. (MDR). เก็บถาวรจากต้นฉบับเมื่อ 2016-11-18 . สืบค้นเมื่อ2016-11-18 .
- ↑ "รางวัล SPA มอบให้แก่ ดร. แกรี่ เอ. คิลดอลล์: ผู้ได้รับรางวัลความสำเร็จตลอดชีวิต SPA ประจำปี 1995"สมาคมผู้จัดพิมพ์ซอฟต์แวร์ (SPA) 13 มีนาคม 1995 สืบค้นเมื่อ21 ธันวาคม 2019 –ผ่านทาง www.digitalresearch.biz
{{cite web}}: CS1 maint: บริการเก็บถาวรที่เลิกใช้แล้ว ( ลิงก์ ) - ↑ Swaine, Michael (1997-04-01). "Gary Kildall and Collegial Entrepreneurship" . Dr. Dobb's Journal . เก็บถาวรจากต้นฉบับเมื่อ 2007-01-24 . สืบค้นเมื่อ2006-11-20 .
ในเดือนมีนาคม พ.ศ. 2538
สมาคมผู้จัดพิมพ์ซอฟต์แวร์
ได้ยกย่อง
Gary
หลัง มรณกรรมสำหรับผลงานของเขาที่มีต่ออุตสาหกรรมคอมพิวเตอร์ พวกเขาได้ระบุความสำเร็จบางส่วนของเขาไว้ดังนี้: […] ในช่วงทศวรรษ 1980 ผ่านทาง
DRI
เขาได้แนะนำโปรแกรมคอมไพเลอร์ไบนารี […]
- ↑ Huitt, Robert; Eubanks, Gordon ; Rolander, Thomas "Tom" Alan ; Laws, David; Michel, Howard E.; Halla, Brian; Wharton, John Harrison ; Berg, Brian; Su, Weilian; Kildall, Scott ; Kampe, Bill (2014-04-25). Laws, David (บรรณาธิการ). "มรดกของ Gary Kildall: การอุทิศอนุสรณ์สถาน CP/M IEEE" (PDF) (ถอดความจากวิดีโอ). Pacific Grove, California, USA: พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์หมายเลขอ้างอิง CHM: X7170.2014 สืบค้นเมื่อ 2020-01-19 [
…]
Rolander
: ผมได้กล่าวไปก่อนหน้านี้แล้วว่า
Gary
ชอบที่จะเข้าถึงปัญหาในฐานะสถาปนิก […] และเขาจะวาดภาพโครงสร้างข้อมูลของเขาได้อย่างสวยงามที่สุด […] และเมื่อเขาทำเสร็จแล้ว […] และมั่นใจว่าโครงสร้างข้อมูลเหล่านั้นถูกต้องแล้ว เขาจะเข้าสู่โหมดการเขียนโค้ดอย่างบ้าคลั่งอย่างไม่น่าเชื่อ เขาจะทำงานติดต่อกันนานถึง 20 ชั่วโมงต่อวัน […] เขาจะไม่อยู่บ้านเลยในช่วงเวลาเหล่านั้น ในบางครั้ง เมื่อเขาสามารถทำให้โปรแกรมทำงานได้เป็นครั้งแรก ซึ่งอาจจะเป็นช่วงกลางดึก และพวกคุณทุกคนที่เคยเขียนซอฟต์แวร์คงเคยเห็นมาแล้ว ตัวอย่างเช่น เมื่อมันแสดงผลบนหน้าจอเป็นครั้งแรก คุณต้องบอกคนอื่นให้รู้ ภรรยาของผม ลอรี จะบอกคุณว่า ผมเคยได้รับโทรศัพท์แบบนั้นหลายครั้งในช่วงกลางดึก
LOGO
เป็นตัวอย่างหนึ่ง
XLT 86
ก็เป็นอีกตัวอย่างหนึ่ง ที่เขาสามารถทำให้มันทำงานได้เป็นครั้งแรก และเขาต้องมีคนมาดู ดังนั้นไม่ว่าจะเป็นเวลาไหน เขาก็จะโทรหาผม ผมก็ต้องไปดูว่ามันทำงานอยู่หรือไม่ […]
(33 หน้า)
- ↑ Barry, Tim (1982-04-05). "XLT-86, โปรแกรมยูทิลิตี้ CP/M โดย Digital Research" . InfoWorld - นิตยสารข่าวรายสัปดาห์สำหรับผู้ใช้ไมโครคอมพิวเตอร์ . InfoWorld Software Review. เล่มที่4, ฉบับที่13. Popular Computing, Inc.หน้า40– 41, 53. ISSN 0199-6649 . สืบค้นเมื่อ2020-01-25 .
[…]
XLT-86
เป็นโปรแกรมตัวแปลเชิงวิเคราะห์ที่เขียนด้วยภาษา
PL/I-80 มันอ่านโปรแกรมต้นฉบับ
8080
ทั้งหมด
ประกอบเป็น
รหัสเครื่อง
วิเคราะห์การใช้งานรีจิสเตอร์ หน่วยความจำ และแฟล็ก และสร้าง โปรแกรมภาษาแอสเซมบลี
8086
ที่ได้รับการปรับให้เหมาะสม […] การแปลโปรแกรมดำเนินไปในห้าขั้นตอน ขั้นแรก โปรแกรมจะถูกสแกนและประกอบเพื่อสร้างค่าสัญลักษณ์และตำแหน่ง ขั้นที่สอง โครงสร้างของโปรแกรมจะถูกวิเคราะห์และแยกย่อยเป็น
บล็อก
พื้นฐาน
ประการที่สาม บล็อกพื้นฐานจะถูกวิเคราะห์เพื่อกำหนดการ
ไหลของโปรแกรม
และการใช้ทรัพยากร ประการที่สี่ ข้อมูล
โครงสร้างบล็อก
และ
การจัดสรรรีจิสเตอร์
จะถูกรวบรวมเป็นรายการสำหรับผู้ใช้ ประการที่ห้า ข้อมูลการไหลและโปรแกรมต้นฉบับจะถูกนำมาใช้เพื่อสร้างโปรแกรมต้นฉบับ 8086 […]
- ↑ Kildall, Gary Arlen (19 เมษายน 1982). Swaine, Michael ; Freiberger, Paul ; Markoff, John Gregory (บรรณาธิการ). "ผู้ก่อตั้ง Digital Research พูดคุยเกี่ยวกับมุมมองของเขาต่อธุรกิจ" . InfoWorld - นิตยสารข่าวรายสัปดาห์สำหรับผู้ใช้ไมโครคอมพิวเตอร์ . ส่วนพิเศษ: CP/M. เล่มที่4, ฉบับที่15. Popular Computing, Inc.หน้า23– 24. ISSN 0199-6649 . สืบค้นเมื่อ17 มกราคม 2020 .
[…] Kildall: […] เมื่อหนึ่งปีครึ่งที่แล้ว ผมน่าจะใช้เวลา 75% ไปกับธุรกิจ และ 25% ไปกับการเขียนโปรแกรม
XLT-86
เป็นผลิตภัณฑ์ที่ผมกำลังพัฒนาอยู่ ณ เวลานั้น และใช้เวลาถึงเก้าเดือนในการทำ ซึ่งถ้าผมสามารถจดจ่อกับมันได้ มันน่าจะเป็นโครงการสามเดือน […]
- ↑ Kildall, Gary Arlen (มิถุนายน–กรกฎาคม 1982). Bunnell, David Hugh ; Edlin, Jim (บรรณาธิการ). "Gary Kildall - ชายผู้สร้าง CP/M: ผู้สร้าง CP/M - บทสัมภาษณ์เชิงลึกเฉพาะ PC กับ Gary Kildall ผู้บุกเบิกด้านซอฟต์แวร์" . PC Magazine . ระบบปฏิบัติการ. เล่ม1, ฉบับที่3. Software Communications, Inc.หน้า32– 38, 40 . สืบค้นเมื่อ2020-01-17 .
[…] PC: ความซับซ้อนบางประการที่เกี่ยวข้องกับการแปลงโปรแกรมจาก รูปแบบ
8080
เป็น
8086
มีอะไรบ้าง ?
Kildall
: การแปลงโดยตรง
ในระดับโปรแกรมต้นฉบับ
คุณสามารถทำได้โดยอัตโนมัติ ตัวอย่างเช่น คำสั่ง "Add immediate 5" ของ 8080 จะเปลี่ยนเป็น "Add AL 5" บน 8086 ซึ่งเป็นการแปลงรหัสการทำงานโดยตรงมาก ความซับซ้อนใน
การแปลงเชิงกล
มาจากสถานการณ์เช่นนี้: คำสั่ง DAD H ของ 8080 รับค่าจากรีจิสเตอร์ HL แล้วบวกด้วย DE สำหรับ 8086 คำสั่งที่เทียบเท่ากันจะเป็น ADD DX BX ซึ่งก็ใช้ได้ ไม่มีปัญหาอะไรเป็นพิเศษ คุณแค่บอกว่ารีจิสเตอร์ DX เหมือนกับ HL และ BX เหมือนกับ DE ปัญหาคือคำสั่งของ 8086 มีผลข้างเคียงคือการตั้งค่าแฟล็กเป็นศูนย์ ในขณะที่คำสั่งของ 8080 ไม่มี ในการแปลงเชิงกล คุณจะต้องทำอะไรบางอย่างเช่น บันทึกแฟล็ก คืนค่าแฟล็ก ทำการเลื่อนและหมุนบิต และอื่นๆ ซึ่งเพิ่มคำสั่งพิเศษประมาณห้าหรือหกคำสั่งเพื่อให้ได้ผลลัพธ์ทางความหมายเดียวกัน มีลำดับจำนวนมากในโค้ด 8080 ที่สร้างลำดับที่แปลกประหลาดมากในโค้ด 8086 พวกมันไม่สามารถจับคู่กันได้ดีนักเนื่องจากรีจิสเตอร์แฟล็กและสิ่งต่างๆ เหล่านั้น วิธีที่เราถ่ายโอนซอฟต์แวร์คือสิ่งที่เรียกว่า
XLT-86
ซึ่งออกมาได้ประมาณหกเดือนแล้ว PC: คำว่า "โค้ดที่ดีกว่า" หมายถึงขนาดเล็กกว่าใช่ไหมครับ? Kildall: เล็กกว่าประมาณ 20 เปอร์เซ็นต์ เมื่อเทียบกับการนำโอเปอเรชันโค้ดทุกตัวมาแปลโดยตรง โดยคงค่ารีจิสเตอร์ไว้เพื่อรักษาความหมาย PC: ขนาดของโปรแกรมที่แปลแล้วเทียบกับเวอร์ชัน 8080 เป็นอย่างไรครับ? Kildall: ถ้าคุณนำโปรแกรม 8080 มาแปลงเป็นเวอร์ชัน 86 บิต แล้วทำการแปลเป็น XLT-86 คุณจะพบว่ามันมีขนาดใหญ่ขึ้นประมาณ 10 ถึง 20 เปอร์เซ็นต์ ในเครื่อง 16 บิต การเข้าถึงทุกอย่างทำได้ยากกว่า ทำให้โอเปอเรชันโค้ดมีขนาดใหญ่ขึ้นโดยเฉลี่ย ปรากฏการณ์ที่น่าสนใจอย่างหนึ่งคือ หนึ่งในเหตุผลที่คุณไม่ได้รับความเร็วเพิ่มขึ้นอย่างมหาศาลในโลก 16 บิตก็เพราะคุณใช้โอเปอเรชันโค้ดจำนวนมากขึ้นบนบัสข้อมูล […]
อ่านเพิ่มเติม
- Wenzl, Matthias; Merzdovnik, Georg; Ullrich, Johanna; Weippl, Edgar R. (มิถุนายน 2019) [กุมภาพันธ์ 2019, พฤศจิกายน 2018, พฤษภาคม 2018]. "จากแฮ็กสู่เทคนิคที่ซับซ้อน - การสำรวจเกี่ยวกับการเขียนไบนารีใหม่" (PDF) . ACM Computing Surveys . 52 (3). เวียนนา, ออสเตรีย: 49:1–49:36. doi : 10.1145/3316415 . S2CID 195357367 . บทความ 49. เก็บถาวร(PDF)จากต้นฉบับเมื่อ 2021-01-15 . สืบค้นเมื่อ2021-11-28 . (36 หน้า)