ล่าสุดมีข่าวหลุดมาว่าโครงการนี้ 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) ซึ่งช่วยให้คุณย้อนกลับไปในประวัติการดำเนินการและกลับไปยังจุดที่ดำเนินการก่อนหน้านี้
ฉัน: อีมูเลเตอร์มีขนาดเล็กแค่ไหน?
กะพริบตา: ใช่#บลิ๊งค์ #เสียงกราว #สกสค #hacking pic.twitter.com/75iUIQN6Wn— 0xHiro (ヒロ) (@0x1hiro) January 4, 2023
ไฟกระพริบเป็นอินเทอร์เฟซ 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 คุณสามารถทำได้จาก ลิงค์ต่อไปนี้