مجموعه دستورالعمل: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
خط ۷۰:
*صفر-عملوند (ماشین های فاقد آدرس) یا همان ماشین های پشته: تمام عملیات محاسباتی با استفاده از عنصر بالای پشته یا دو موقعیت در پشته رخ می دهند: <code>push a</code>, <code>push b</code>, <code>add</code>, <code>pop c</code>. <br>
**عمل <code>C = A+B</code> نیازمند ''چهار دستورالعمل'' است. برای ماشین های پشته اصطلاحات "صفر-عملوند" و "صفر-آدرس" به عملیات محاسباتی اطلاق می شوند و به تمام دستورالعمل ها اطلاق نمی شوند، زیرا دستورالعمل های تک-عملوندی push و pop برای دسترسی به حافظه استفاده می شوند.<br>
*یک-عملوند (''ماشین های تک آدرسی'') یا همان ماشین های جمع کننده، که شامل کامپیوتر های ابتدایی و بسیاری از میکروکنترلر های کوچک می شود: اکثر دستورالعمل ها یک عملوند سمت راست (یک ثابت، رجیستر یا مکان حافظه) را، همراه با [[انباشتگر|جمع کننده]] ی ضمنی به عنوان عملوند سمت چپ(و مقصد، درصورتیکه تنها باشد) مشخص می کنند: <code>load a</code>, <code>add b</code>, <code>store c</code> <br>
**عملیات <code>C = A+B</code> نیازمند ''سه دستورالعمل'' است.<br>
*دو عملوند- بسیاری از ماشین های CISC و RISC تحت این مقوله قرار می گیرند.<br>
خط ۹۲:
به دلیل تعداد زیاد بیت های مورد نیاز برای کدگذاری سه رجیستر یک دستورالعمل سه-عملوندی، معماری های RISC که دارای دستورالعمل های ۱۶ بیتی هستند، تماماً دارای طراحی های دو-عملوندی هستند، نظیر: Atmel AVR, TI MSP43 و برخی نسخه‌های ARM Thumb. معماری های RISC که دارای دستورالعمل های ۳۲ بیتی هستند، معمولاً دارای طراحی‌های سه-عملوندی هستند، نظیر: ARM, AVR32, MIPS, Power ISA و معماری های SPARC.<br>
هر دستورالعمل تعدادی عملوند (رجیستر ها، مکان های حافظه، یا مقادیر فوری) را "به طور آشکار" مشخص می کند. برخی دستورالعمل‌ها یک یا بیش از یک عملوند را به طور ضمنی فراهم می کنند، مثلاً از طریق ذخیره شدن در بالای یک پشته، یا در یک رجیستر غیر مستقیم. در حالتی که برخی از عملوند ها بطور ضمنی داده می‌شوند، به عملوند های کمتری در دستورالعمل نیاز هست. هنگامی که یک "عملوند مقصد" به طور آشکار مقصد را مشخص می کند، باید عملوند دیگری نیز فراهم شود. در نتیجه تعداد عملوند های کدگذاری شده در یک دستورالعمل، ممکن است با تعداد آرگومان های مورد نیاز از نظر ریاضی برای یک عملیات منطقی یا محاسباتی (به انگلیسی: arity) تفاوت داشته باشد. عملوند ها یا در نمایش "آپ کد" دستورالعمل، کدگذاری می‌شوند و یا اینکه به صورت مقادیر یا آدرس، به دنبال آپ کد می آیند.
 
=== فشار رجیستر ===
فشار رجیستر نمایانگر تعداد رجیستر های آزاد در هر زمان از اجرای برنامه است. فشار رجیستر، زمانی که تعداد زیادی از رجیستر های موجود در حال استفاده هستند بالاست. بنابراین هر قدر فشار رجیستر بالاتر باشد، به تعداد دفعات بیشتری لازم است تا محتویات رجیستر به داخل حافظه سرریز شود. افزایش تعداد رجیستر ها در یک معماری موجب کاهش فشار رجیستر می شود، اما هزینه را افزایش می دهد.<br>