תמצמץ אמולטור x86-64 שמבטיח לעלות על QEMU

blink-gcc

צילום מסך של ריצת מצמוץ

לאחרונה התפרסמה הידיעה שהפרויקט Blink מפתחת אמולטור חדש של מעבד x86-64 זה מאפשר לך להפעיל יישומי לינוקס מהודרים באופן סטטי במכונה וירטואלית עם מעבד חיקוי.

מוזכר כי eהמטרה העיקרית של הפרויקט היא לספק את היכולת להריץ תוכניות לינוקס שהורכבו עבור ארכיטקטורת x86-64 במערכות הפעלה אחרות (macOS, FreeBSD, NetBSD, OpenBSD) ובמחשבים עם ארכיטקטורת חומרה שונה (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

במאגר הפרויקט הם מתארים את blink באופן הבא:

blink הוא מכונה וירטואלית המריץ תוכניות x86-64-linux הידור סטטי על מערכות הפעלה וארכיטקטורות חומרה שונות. הוא נועד לעשות את אותו הדבר כמו הפקודה qemu-x86_64, פרט לכך (א) במקום להיות בינארי של 4MB, ל-Blink יש רק ~160kb טביעת רגל; ו-(ב) ה-Blink מהיר פי 2 מ-Qemu בכמה מדדים, כמו חיקוי GCC. הפשרה היא שלבלינק אין תכונות רבות כמו ל-Qemu. Blink מתאים בצורה מושלמת כאשר אתה רוצה מכונה וירטואלית קטנה במיוחד ומריצה תוכניות ארעיות הרבה יותר מהר. לפרטים נוספים על המניעים לכלי זה, אנא קרא https://justine.lol/ape.html.

ראוי להזכיר שהפרויקט פותח על ידי מחברם של פיתוחים כמו ספריית Cosmopolitan C, יציאה למנגנון בידוד המחויבות עבור לינוקס ומערכת הקבצים האוניברסלית של Redbean.

מבחינת פונקציונליות, מצמוץ נראה כמו הפקודה qemu-x86_64, אבל שונה מ-QEMU בעיצוב קומפקטי יותר ובעלייה משמעותית בביצועים. לדוגמה, קובץ ההפעלה של Blink הוא רק 157 KB במקום 4 MB עבור qemu-x86_64, ו מבחינת ביצועים בהפעלת המבחן באמולטור GCC, בלינק מנצח את QEMU פעמיים.

כדי להבטיח ביצועים גבוהים, נעשה שימוש במהדר JIT, הממיר הוראות מקור לקוד מכונה עבור פלטפורמת היעד תוך כדי (בינתיים רק x86_64 ו-aarch64 תומכים ב-JIT).

הפעלה ישירה על האמולטור של קבצי הפעלה בפורמטים ELF, PE (ניתן להפעיל) ו-bin (Flat Executable), הידור עם ספריות C הסטנדרטיות Cosmopolitan, Glibc ו-Musl נתמכת.

חוץ מזה, זה גם בולט שהיא שילבה תמיכה ליותר ממאה שיחות למערכת לינוקס, כולל fork() ו-clone(). אמולציה של ערכות ההוראות i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED ו-RDTSCP.

בנוסף, הפרויקט מפתח את כלי השירות blinkenlights, המספק ממשק לאיתור באגים בתוכניות בפלטפורמות שונות, הדמיית ביצוע תוכניות וניתוח תוכן זיכרון. תכונה של באגים היא תמיכה במצב איתור באגים הפוך (Reverse Debugging), המאפשר לך לחזור אחורה בהיסטוריית הביצוע ולחזור לנקודה שבוצעה קודם לכן.

blinkenlights הוא ממשק TUI שניתן להשתמש בו כדי לנפות באגים בתוכניות x86_64-linux בכל הפלטפורמות. שלא כמו GDB, Blinkenlights מתמקדת בהדמיה של ביצוע התוכנית. הוא משתמש בתווים UNICODE IBM Code Page 437 כדי להציג לוחות זיכרון בינאריים, המשתנים תוך כדי מעבר בקוד ה-assembly של התוכנית שלך. ניתן לגלול ולהגדיל את לוחות הזיכרון הללו באמצעות גלגל העכבר. Blinkenlights תומך גם באיתור באגים הפוך, כאשר גלילה על הגלגל על ​​מסך ההרכבה מאפשרת לך להריץ אחורה את היסטוריית הביצוע.

לבסוף, למי שמעוניין ללמוד עוד על פרויקט זה, עליהם לדעת שקוד הפרויקט כתוב ב-C (ANSI C11) ומופץ תחת רישיון ISC. מבין התלות, נדרש רק libc (POSIX.1-2017).

קבל בלינק

למי שמעוניין להתנסות ב-blink, כדאי לדעת שההידור שלו פשוט ביותר, צריך רק להשיג את קוד המקור שלו, הם יכולים לעשות זאת מהקישור הבא או ממסוף על ידי הקלדת הפקודה הבאה :

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. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.