PDA

View Full Version : سوال: مد حقیقی و مد محافظت شده



reza_noei
شنبه 01 فروردین 1394, 23:31 عصر
سلام
یک سوال برام پیش اومده، میخواستم بدونم که پردازنده های فعلی ما که دستورالعمل های 32 بیتی 64 بیتی
و تحت شرایطی (در مد حقیقی) 16 بیتی را اجرا میکنند به چه شکلی پیاده شده اند یعنی :

* آیا همزمان 3 نوع تراشه برای اجرای دستورات دارند

* یا فقط نوع مرتبه بالاتر (مثلا 64 بیتی) را دارند و بقیه دستورالعمل ها را به شکلی (سخت افزاری یا نرم افزاری)
دستورات مختلف را اجرا میکنند ؟

* یا ؟

ممنون

H_afkhami60
یک شنبه 02 فروردین 1394, 02:37 صبح
سلام

همه دستورات (چه 16 بیتی، چه 32 بیتی و چه 64 بیتی) توسط یک تراشه (پردازنده) اجرا میشه. البته نباید گفت دستور 16 بیتی بلکه باید گفت دستوراتی که برای پردازنده های 16 بیتی طراحی شدند یا دستوراتی که توسط پردازنده های 16 بیتی قابل تشخیص هستند. پردازنده های جدید اینتل دستورات پردازنده های نسل های قبل را هم تشخیص می دهند و به قول معروف با آنها سازگار هستند. ثبات های پردازنده های 32 بیتی، 32 بیت و ثباتهای پردازنده های 64 بیتی، 64 بیت است. شما می توانید یک عدد 16 بیتی را داخل یک ثبات 32 بیتی یا 64 بیتی ذخیره کنید. مابقی ثبات صفر خواهد بود.

تفاوت اصلی مد حقیقی و مد حفاظت شده در نحوه آدرس دهی حافظه و کنترل دسترسی به سگمنت های مختلف است. در مد حقیقی ثبات سگمنت کد یا داده، ابتدای آدرس آن سگمنت را نشان می دهد. اما در مد حفاظت شده این ثبات بطور غیرمسقیم به این آدرس اشاره می کند.

reza_noei
یک شنبه 02 فروردین 1394, 10:31 صبح
پس به این ترتیب این امکان وجود داره که بخواهیم درهم (mixed) کد نویسی کنیم ؟ (یعنی در کنار دستورات 16 بیتی دستورات 64 یا 32 بیتی را هم استفاده کنیم)
به نظر من عجیبه (:

H_afkhami60
یک شنبه 02 فروردین 1394, 16:18 عصر
بله. مثلاً شما می توانید از دستور mov ax,64000 استفاده کنید و بعد از آن از دستور mov ebx,4000000000. که هر دو دستور توسط یک پردازنده 32 بیتی قابل تشخیص است. البته پردازنده 32 بیتی باس داده 32 بیتی دارد ولی باس آدرس آن ممکن است بسته به طراحی آن بزرگتر یا مساوی 32 بیت باشد.