اولین نسخه قابل توجه پروژه Blink منتشر شده است که یک شبیه ساز پردازنده x86-64 را توسعه می دهد که به شما امکان می دهد برنامه های لینوکس ساخته شده به صورت ایستا و پویا را در یک ماشین مجازی با یک پردازنده شبیه سازی شده اجرا کنید. با استفاده از Blink، برنامههای لینوکس کامپایلشده برای معماری x86-64 را میتوان بر روی سایر سیستمعاملهای سازگار با POSIX (macOS، FreeBSD، NetBSD، OpenBSD، Cygwin) و روی سختافزار با معماریهای سختافزاری دیگر (x86، ARM، RISC-V، MIPS) اجرا کرد. , PowerPC, s390x). کد پروژه به زبان C (ANSI C11) نوشته شده و تحت مجوز ISC توزیع شده است. از بین وابستگی ها، فقط libc (POSIX.1-2017) مورد نیاز است.
از نظر عملکرد، Blink شبیه دستور qemu-x86_64 است، اما در طراحی فشرده تر و افزایش عملکرد قابل توجه با QEMU تفاوت دارد. به عنوان مثال، فایل اجرایی Blink به جای 221 مگابایت برای qemu-x115_4، تنها 86 کیلوبایت (با ساخت کوتاه - 64 کیلوبایت) مصرف می کند و از نظر عملکرد در برخی تست ها، مانند اجرای در شبیه ساز GCC و انجام عملیات ریاضی، حدود دو برابر از QEMU پیشی می گیرد.
برای اطمینان از کارایی بالا، از یک کامپایلر JIT استفاده میشود که دستورالعملهای منبع را به کد ماشین برای پلتفرم هدف در پرواز تبدیل میکند. راه اندازی مستقیم در شبیه ساز فایل های اجرایی در فرمت های ELF، PE (قابل اجرا قابل حمل) و bin (قابل اجرا تخت) که با کتابخانه های استاندارد C Cosmopolitan، Glibc و Musl کامپایل شده است، پشتیبانی می شود. پشتیبانی بومی برای 180 تماس سیستمی لینوکس و شبیه سازی حدود 600 دستورالعمل پردازنده x86 که i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT, R, X87, PDED) را پوشش می دهد. مجموعه های دستورالعمل و RDTSCP.
علاوه بر این، ابزار blinkenlights بر اساس Blink در حال توسعه است که یک رابط برای تجسم اجرای برنامه و تجزیه و تحلیل محتویات حافظه فراهم می کند. این ابزار می تواند به عنوان یک اشکال زدایی استفاده شود که از حالت اشکال زدایی معکوس (Reverse-Debugging) پشتیبانی می کند و به شما امکان می دهد در تاریخچه اجرا به عقب برگردید و به نقطه ای که قبلاً اجرا شده بازگردید. این پروژه توسط نویسنده پیشرفت هایی مانند C-library Cosmopolitan، پورت مکانیزم جداسازی تعهد برای لینوکس و سیستم فایل اجرایی جهانی Redbean توسعه یافته است.
منبع: opennet.ru