לדלג לתוכן

פתרון מערכת וירטואלית והתקן וירטואלי

פתרון ראשון

נחליף את המיידי אחרי ההוראה 0xb0 ונוסיף זוג הוראות טעינה וכתיבה לפני 0xf4. המעבד האורח מבצע את ההוראות, ואילו המנהל מטפל ביציאת הקלט והפלט ומדפיס את הבית. אין כאן התקן טורי פיזי ואין צורך בהתקנת דרייבר אורח כדי לבצע את הניסוי המצומצם.

פתרון שני

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

פתרון שלישי

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