مد ۸۰۸۶ مجازی

در ریزپردازنده‌های سری اینتل ۸۰۳۸۶ و به بعد، مد ۸۰۸۶ مجازی (که با نام‌های مد حقیقی مجازی، مد V86 یا VM86 نیز شناخته می‌شود) اجازه می‌دهد برنامه‌های نگاشته شده برای مد حقیقی (به طور مثال برنامه‌های نگاشته شده برای سیستم عامل DOS)، که توانایی اجرا در مد محافظت شده را ندارند، اجرا شوند. در این مد می‌توان با مجازی سازی سخت‌افزاری، چندین پردازنده ۸۰۸۶ را بر روی یک چیپ ۳۸۶ شبیه‌سازی کرد.

مد VM86 جهت آدرس‌دهی از ساختار قطعه‌بندی حافظه  استفاده می‌کند. این مد برای شبیه‌سازی مد حقیقی، درست همانند مد حقیقی یک فضای آدرس‌دهی ۲۰-بیتی خطی ایجاد می‌کند، اما حافظه ایجاد شده، همچون حافظه‌های مد محافظت‌شده، با روش صفحه‌بندی مدیریت می‌شوند.

کاربرد 
مد VM86 جهت اجرای برخی برنامه‌های DOS در سیستم عامل‌های اواس/۲، ویندوز 9x/ویندوز ام‌ای و بعد تر در ماشین مجازی DOS استفاده گشت. علاوه بر این  SCO UNIX  در Merge و لینوکس در dosemu از این مد بهره می‌جویند. ویندوزهای بر پایه NT جهت اجرای برنامه‌های DOS از مد VM86 در زیر سامانه  NTVDM  استفاده می‌کنند.

تشخیص وضعیت ۸۰۸۶ مجازی 
تشخیص قرار داشتن در یکی از مدهای ۸۰۸۶ مجازی یا حقیقی، برای یک برنامه نگاشته شده برای مد حقیقی می‌تواند مفید باشد. برای رسیدن به این هدف، می‌توان در یک برنامه مد حقیقی، بخش ابتدایی ثبات CR0 را با استفاده از دستور SMSW بررسی کرد. بیت PE از این ثبات نشانگر فعال یا غیرفعال بودن مد محافظت‌شده است؛ بنابراین درصورتی که برنامه در مد ۸۰۸۶ مجازی اجراشده باشد، این بیت فعال است. چراکه مد ۸۰۸۶ مجازی درون مد محافظت‌شده اجرا می‌شود. تکه کد زیر این رهیافت را با زبان ماشین، بازگو می‌کند:

detect_v86:
  smsw ax
  and eax,1 ;CR0.PE bit
  ret

منابع 

 

پیاده‌سازی زبان برنامه‌نویسی
محصولات اینتل
نرم‌افزارهای مجازی‌سازی
ریزپردازنده‌های اکس۸۶ اینتل