MPACT-Sim היא מסגרת וספרייה שנועדו להקל על יצירה של סימולטורים של ISA עם ביצועים גבוהים למגוון רחב של ארכיטקטורות של קבוצות הוראה. סימולטורים שנוצרו באמצעות MPACT-Sim קלים ליצירה, קלים להפעלה ומהירים. המניע העיקרי לשימוש ב-MPACT-Sim הוא ליצור במהירות ולשנות בקלות סימולטורים לניתוח ארכיטקטוני (קבוצת הוראות). עם זאת, אפשר להשתמש בסימולטור שנוצר גם לבניית מודלים של מערכות, לאימות מהדר או לפיתוח תוכנה לארכיטקטורות שאין להן זמינות חומרה (או מוגבלת).
MPACT-Sim קל לבטא ולהטמיע סמנטיקה של הוראות כפונקציות או קריאות לפעולות פשוטות של C++. MPACT-Sim גם מספקת מתודולוגיה מוצהרת למתן הוראות כדי לאפשר יצירה אוטומטית של רוב מפענח ההוראות, וכך להגדיל את הקלות והמהירות שבהן אפשר ליצור סימולטורים חדשים. אפשר להוסיף בקלות ערכים של הגדרות אישיות, ובאמצעות קבוצה של מחלקות סטנדרטיות קל להשתמש בסימולטורים שנוצרו.
הדרכות
במדריכים הבאים תוכלו למצוא הדרכה מפורטת ליצירת סימולטור ISA לקבוצת משנה של הוראות RiscV שמספיקות לביצוע אפליקציית "שלום עולם", שנוצרה עבור קבוצת המשנה הארכיטקטונית RV32I. הם עוסקים בפעילויות הבאות:
צריך לכתוב תיאור של מפענח ISA ל-RV32I.
כאן מתוארות ההוראות האינדיבידואליות ללא קשר לייצוג החיצוני שלהן (בקידוד). התיאור הזה משמש ליצירת קוד C++ שמפעיל את מתארי ההוראות הפנימיים של הסימולטור.
כותבים תיאור של מפענח בינארי ל-RV32I.
כאן מתואר הקידוד הבינארי של ההוראות, שדות ה-bit והערכים שלהם. משמש ליצירת מפענח עבור ההוראות שיכולות למפות מילת הוראה ל-opcode ולחלץ את הערכים של שדות ביט ספציפיים.
כותבים מפענח הוראות משולב (מלא) שמשלב את שני המפענחים שנוצרו, ומוסיפים את הקוד הנדרש כדי להסתיר את מה שהקוד שנוצר לא עובד.
כתבו פונקציות סמנטיות הוראות כדי לספק את היישומים של כל אחת מהוראות היעד של RV32I.
במאמרי ההדרכה הנוכחיים לא תוכלו לכתוב את שאר הקוד שנדרש כדי להשלים את הסימולטור, כולל הבעיה בהוראה, אבל יכול להיות שנוסיף אותו בעתיד. עם זאת, אפשר לראות את הקוד לדוגמה במאגר ההדרכה וגם
תשתית הסימולטור כתובה ב-C++, ולכן ההנחה היא שיש לכם ידע מעשי ב-C++.