กะพริบโปรแกรมจำลอง x86-64 ที่สัญญาว่าจะเกิน QEMU

กระพริบตา-gcc

สกรีนช็อตของการวิ่งพริบตา

ล่าสุดมีข่าวหลุดมาว่าโครงการนี้ Blink กำลังพัฒนาอีมูเลเตอร์ใหม่ ของโปรเซสเซอร์ x86-64 นั่นเอง อนุญาตให้คุณเรียกใช้แอปพลิเคชัน Linux ที่คอมไพล์แล้ว แบบคงที่ในเครื่องเสมือนด้วยตัวประมวลผลจำลอง

มีการกล่าวไว้ว่า eวัตถุประสงค์หลัก ของโครงการ คือการจัดเตรียมความสามารถในการรันโปรแกรม Linux ที่คอมไพล์สำหรับสถาปัตยกรรม x86-64 บนระบบปฏิบัติการอื่น (macOS, FreeBSD, NetBSD, OpenBSD) และบนคอมพิวเตอร์ที่มีสถาปัตยกรรมฮาร์ดแวร์ต่างกัน (x86, ARM, RISC-V, MIPS, PowerPC, s390x)

ในที่เก็บโครงการจะอธิบายการกะพริบดังนี้:

Blink เป็นเครื่องเสมือนที่รันโปรแกรม x86-64-linux ที่คอมไพล์แบบสแตติกบนระบบปฏิบัติการและสถาปัตยกรรมฮาร์ดแวร์ที่แตกต่างกัน มันถูกออกแบบมาเพื่อทำสิ่งเดียวกันกับคำสั่ง qemu-x86_64 ยกเว้นว่า (a) แทนที่จะเป็นไบนารี 4mb Blink จะมีรอยเท้า ~ 160kb เท่านั้น; และ (b) Blink เร็วกว่า Qemu ถึง 2 เท่าในเกณฑ์มาตรฐานบางอย่าง เช่น การจำลอง GCC ข้อเสียคือ Blink ไม่มีฟีเจอร์มากมายเท่า Qemu Blink เหมาะอย่างยิ่งเมื่อคุณต้องการเครื่องเสมือนที่มีขนาดเล็กมากและรันโปรแกรมชั่วคราวได้เร็วกว่ามาก สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับแรงจูงใจสำหรับเครื่องมือนี้ โปรดอ่าน https://justine.lol/ape.html

เป็นมูลค่าการกล่าวขวัญว่าโครงการนี้ได้รับการพัฒนาโดยผู้เขียนของการพัฒนาเช่นไลบรารี Cosmopolitan C ซึ่งเป็นพอร์ตของกลไกการแยกความมุ่งมั่นสำหรับ Linux และระบบไฟล์ปฏิบัติการสากล Redbean

ในส่วนของฟังก์ชั่นการใช้งานนั้น กะพริบดูเหมือนคำสั่ง qemu-x86_64แต่ แตกต่างจาก QEMU ในด้านการออกแบบที่กะทัดรัดกว่าและประสิทธิภาพที่เพิ่มขึ้นอย่างมาก. ตัวอย่างเช่น ไฟล์ปฏิบัติการ Blink มีขนาดเพียง 157 KB แทนที่จะเป็น 4 MB สำหรับ qemu-x86_64 และ ในแง่ของประสิทธิภาพ ในการทดสอบการทำงานบนโปรแกรมจำลอง GCC Blink ชนะ QEMU สองครั้ง.

เพื่อให้แน่ใจว่ามีประสิทธิภาพสูง ใช้คอมไพเลอร์ JIT ซึ่งแปลงคำสั่งซอร์สเป็นรหัสเครื่องสำหรับแพลตฟอร์มเป้าหมายได้ทันที (จนถึงตอนนี้ มีเพียง x86_64 และ aarch64 เท่านั้นที่รองรับ JIT)

เปิดใช้งานโดยตรงบนอีมูเลเตอร์ของไฟล์เรียกทำงานในรูปแบบ ELF, PE (Portable Executables) และ bin (Flat Executable) ซึ่งคอมไพล์ด้วยไลบรารี C มาตรฐาน Cosmopolitan, Glibc และ Musl ได้รับการสนับสนุน

นอกเหนือจากนั้น, นอกจากนี้ยังโดดเด่นตรงที่ได้รวมการรองรับการโทรมากกว่าหนึ่งร้อยสายไปยังระบบ Linux รวมถึงส้อม () และโคลน () รองรับการจำลองชุดคำสั่ง i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED และ RDTSCP

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

ไฟกระพริบเป็นอินเทอร์เฟซ TUI ที่สามารถใช้ในการดีบักโปรแกรม x86_64-linux บนทุกแพลตฟอร์ม Blinkenlights แตกต่างจาก GDB ที่เน้นการแสดงภาพการทำงานของโปรแกรม ใช้อักขระ UNICODE IBM Code Page 437 เพื่อแสดงพาเนลหน่วยความจำไบนารี ซึ่งจะเปลี่ยนเมื่อคุณเลื่อนผ่านรหัสแอสเซมบลีของโปรแกรมของคุณ แผงหน่วยความจำเหล่านี้สามารถเลื่อนและขยายได้ด้วยวงล้อของเมาส์ Blinkenlights ยังรองรับการดีบักแบบย้อนกลับ ซึ่งการเลื่อนวงล้อบนหน้าจอแอสเซมบลีทำให้คุณสามารถย้อนกลับประวัติการดำเนินการได้

สุดท้าย สำหรับผู้ที่สนใจเรียนรู้เพิ่มเติมเกี่ยวกับโครงการนี้ ควรทราบว่ารหัสโครงการเขียนด้วยภาษา C (ANSI C11) และเผยแพร่ภายใต้ใบอนุญาต ISC จากการอ้างอิง จำเป็นต้องใช้ libc (POSIX.1-2017) เท่านั้น

รับกะพริบ

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

git https://github.com/jart/blink.git

และเสร็จแล้วคุณเพียงแค่ป้อนไดเร็กทอรี blik และคอมไพล์:

cd blink

make -j4

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของ Blink คุณสามารถทำได้จาก ลิงค์ต่อไปนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา