โครงการ FEX 2508 ซึ่งพัฒนาโปรแกรมจำลองสำหรับเรียกใช้เกมและแอปพลิเคชันที่คอมไพล์สำหรับสถาปัตยกรรม x86 และ x86-64 ได้ถูกปล่อยออกมาแล้ว Linux- สภาพแวดล้อมบนระบบที่มีโปรเซสเซอร์ ARM64 (AArch64) โปรแกรมจำลอง FEX ถูกใช้โดยโครงการ Asahi เพื่อเรียกใช้เกมจากแคตตาล็อก Steam ซึ่งคอมไพล์สำหรับสถาปัตยกรรม x86_64 บนระบบที่มีชิป ARM โค้ดของโครงการเขียนด้วยภาษา C++ พร้อมแทรกโค้ดแอสเซมบลี และเผยแพร่ภายใต้ใบอนุญาต MIT
ไลบรารีที่จำเป็นสำหรับการรันแอปพลิเคชัน x86 ในสภาพแวดล้อม ARM64 จะเชื่อมต่อในรูปแบบของเลเยอร์โอเวอร์เลย์กับอิมเมจ rootfs ที่ให้มาในรูปแบบ SquashFS โอเวอร์เลย์นี้ทำให้สามารถทำได้โดยไม่ต้องสร้างสภาพแวดล้อม chroot แยกต่างหาก การโหลดอิมเมจ rootfs ที่สร้างโดยโครงการแล้วจะดำเนินการโดยยูทิลิตี้ FEXRootFSFetcher
ในการเข้าถึงความสามารถของสภาพแวดล้อมโฮสต์ เช่น เครื่องมือเสียงและกราฟิก 3 มิติ จะมีการวางไลบรารี thunk ไว้ใน rootfs ซึ่งจะแปลการเรียกใช้ไลบรารีและโค้ดบนฝั่งระบบโฮสต์ (เช่น การเรียกใช้ OpenGL และ Vulkan สามารถเปลี่ยนเส้นทางได้) ไลบรารีเหล่านี้ยังสามารถใช้บนฝั่งโฮสต์เพื่อเรียกใช้โค้ดในสภาพแวดล้อมเกสต์ได้อีกด้วย ไลบรารีที่พร้อมใช้งานสำหรับการส่งต่อ ได้แก่: libEGL, libGL, libSDL2, libX11, libVDSO, libasound, libdrm, libfex_malloc, libvulkan, libwayland-client และ libxshmfence
ในเวอร์ชันใหม่:
- ได้มีการปรับแต่งคอมไพเลอร์ JIT อย่างมีนัยสำคัญ ซึ่งช่วยเพิ่ม FPS ใน Cyberpunk 2077 ได้ 38.9%, Doom 2016 ได้ 30.9%, Stray ได้ 25.2%, Grim Fandango Remastered ได้ 24.7%, Teardown ได้ 12.6% และ Gold of War 2018 ได้ 4.6% ผลกระทบที่ยิ่งใหญ่ที่สุดเกิดขึ้นจากการปรับแต่ง call stack และ returns (call-return) รวมถึงการใช้โมเดลหน่วยความจำ TSO (Total Store Ordering) ในไลบรารี wow64/arm64ec ซึ่งรองรับในซีพียู Apple Silicon

- ใช้งานการรองรับสำหรับบิต NX (No Execute) เพื่อห้ามการดำเนินการคำสั่งในพื้นที่หน่วยความจำที่ไม่ได้ทำเครื่องหมายไว้โดยเฉพาะว่าอนุญาตให้ดำเนินการได้
- ปรับปรุงการรองรับโค้ดที่ใช้เพื่อป้องกันการดีบักและการปรับเปลี่ยนกระบวนการดำเนินการในเกมเช่น Peggle Deluxe และ Crysis 2: Maximum Edition
ที่มา: opennet.ru

