نقل قول: مد حقیقی و مد محافظت شده
سلام
همه دستورات (چه 16 بیتی، چه 32 بیتی و چه 64 بیتی) توسط یک تراشه (پردازنده) اجرا میشه. البته نباید گفت دستور 16 بیتی بلکه باید گفت دستوراتی که برای پردازنده های 16 بیتی طراحی شدند یا دستوراتی که توسط پردازنده های 16 بیتی قابل تشخیص هستند. پردازنده های جدید اینتل دستورات پردازنده های نسل های قبل را هم تشخیص می دهند و به قول معروف با آنها سازگار هستند. ثبات های پردازنده های 32 بیتی، 32 بیت و ثباتهای پردازنده های 64 بیتی، 64 بیت است. شما می توانید یک عدد 16 بیتی را داخل یک ثبات 32 بیتی یا 64 بیتی ذخیره کنید. مابقی ثبات صفر خواهد بود.
تفاوت اصلی مد حقیقی و مد حفاظت شده در نحوه آدرس دهی حافظه و کنترل دسترسی به سگمنت های مختلف است. در مد حقیقی ثبات سگمنت کد یا داده، ابتدای آدرس آن سگمنت را نشان می دهد. اما در مد حفاظت شده این ثبات بطور غیرمسقیم به این آدرس اشاره می کند.
نقل قول: مد حقیقی و مد محافظت شده
پس به این ترتیب این امکان وجود داره که بخواهیم درهم (mixed) کد نویسی کنیم ؟ (یعنی در کنار دستورات 16 بیتی دستورات 64 یا 32 بیتی را هم استفاده کنیم)
به نظر من عجیبه (:
نقل قول: مد حقیقی و مد محافظت شده
بله. مثلاً شما می توانید از دستور mov ax,64000 استفاده کنید و بعد از آن از دستور mov ebx,4000000000. که هر دو دستور توسط یک پردازنده 32 بیتی قابل تشخیص است. البته پردازنده 32 بیتی باس داده 32 بیتی دارد ولی باس آدرس آن ممکن است بسته به طراحی آن بزرگتر یا مساوی 32 بیت باشد.