نمونه این سوال توی آزمون ۲۵ درصد اول پارسه بود. من هم جایی ندیده بودم چطوری حل میشه. من به روش زیر حل کردمش:
سوال این بود:
اگر طول دستور ۱۰ بیت و طول آدرس ۳ بیت باشد و ۱۴ دستور دو عملوندی و ۱۵ دستور تک عملوندی داشته باشیم چند دستور بدون عملوند می توانیم داشته باشیم؟
خوب فضای کلی دستور به این صورت هست:
---|---|---- = xxxx|yyy|zzz
پس چهار بیت برای opcode دو عملوندی داریم که میشه ۱۶ دستور ولی ما اینجا از ۱۴ تاش استفاده کردیم یعنی ۲ دستور خالی داریم. من فرض می کنم این دو دستور ۰۰۰۰ و ۰۰۰۱ هستند. حالا گفته ۱۵ تا دستور تک عملنودی داریم من از سه بیت بخش دوم (yyy) استفاده می کنم. چون یک اپرند می خوایم مشکلی پیش نمیاد. و چون ۳ بیت هست میشه باهاش ۸ دستور ایجاد کرد ولی توی مرحله قبل ما دو دستور ۰۰۰۰ و ۰۰۰۱ را خالی داریم. پس اینها را با هم ترکیب می کنیم تا بتوانیم ۱۶ دستور تک عملوندی ایجاد کنیم که میشه:
---|y|yyy---
خوب همانطور که دیدی ما می توانیم ۱۶ دستور ۲ تک عملوندی داشته باشیم که از ۱۵ تاش داریم استفاده می کنیم. من فرض می کنم دستور باقیمانده ---|۰۰۰|۰۰۰۰ باشه.
خوب پس می توانم با ترکیب این دستور و ۳ بیت باقیمانده ۸ دستور بدون عملوند استفاده کنم.
حالا با این نکته دقت کن:
اگر گفته بود ۱۶ دستور تک عملوندی داریم دیگه نمی شد دستور بدون عملوند ایجاد کرد چون ---|۰۰۰|۰۰۰۰ جزئ دستورات تک عملوندی می شد و اگر من از سه بیت باقیمانده برای دستورات صفر عملوندی استفاده می کردم کامپیوتر نمی تونست تشخیص بده این دستور بدون عملوند هست یا اینکه یک دستور تک عملوندی است.
امیدوارم تونسته باشم درست توضح بدم