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

محتوای حذف‌شده محتوای افزوده‌شده
خط ۹۵:
=== فشار رجیستر ===
فشار رجیستر نمایانگر تعداد رجیستر های آزاد در هر زمان از اجرای برنامه است. فشار رجیستر، زمانی که تعداد زیادی از رجیستر های موجود در حال استفاده هستند بالاست. بنابراین هر قدر فشار رجیستر بالاتر باشد، به تعداد دفعات بیشتری لازم است تا محتویات رجیستر به داخل حافظه سرریز شود. افزایش تعداد رجیستر ها در یک معماری موجب کاهش فشار رجیستر می شود، اما هزینه را افزایش می دهد.<br>
در حالی که مجموعه‌های دستورالعمل نهفته نظیر Thumb از فشار بسیار بالای رجیستر به دلیل تعداد کم مجموعه رجیستر رنج می برند، اما معماری های مجموعه دستورالعمل RISC عمومی نظیر [[معماری میپس|MIPS]] و Alpha دارای فشار رجیستر پایینی هستند. معماری های مجموعه های دستورالعمل CISC، همچون x86-64، علی رغم داشتن مجموعه رجیستر کوچکتر دارای فشار رجیستر کمتری هستند. دلیل این امر وجود تعداد زیادی حالت های آدرس دهی و بهینه سازی (نظیر آدرس‌دهی تحت رجیستر، عملوند های حافظه در دستورالعمل های ALU، آدرس دهی مستقیم، آدرس دهی مرتبط با شمارنده برنامه و سرریز های رجیستر-به-رجیستر) است که توسط معماری های مجموعه دستورالعمل CISC ارائه می شوند.
 
=== طول دستورالعمل ===
اندازه یا طول یک دستورالعمل می تواند بسیار متفاوت باشد؛ از یک مقدار چهار بیتی در برخی [[ریزکنترل‌گر|میکروکنترلرها]] تا چند صد بیت در برخی سیستم های VLIW. پردازنده های مورد استفاده در رایانه‌های شخصی، رایانه های بزرگ و ابر رایانه ها، دارای اندازه دستورالعمل بین ۸ و ۶۴ بیت هستند. حداکثر اندازه ممکن برای دستورالعمل در x86  برابر با ۱۵ بایت (۱۲۰ بیت) است. در داخل یک مجموعه دستورالعمل، دستورالعمل های مختلف، ممکن است طول متفاوت داشته باشند. در برخی معماری ها، نظیر اکثر RISC ها، دستورالعمل ها دارای طول ثابتی هستند که معمولاً مطابق با اندازه ی [[کلمه (معماری رایانه)|کلمه]] آن معماری می باشند. در معماری های دیگر، دستورالعمل ها دارای طول متغیر هستند، که معمولاً مضرب های صحیح از یک بایت یا یک نیم کلمه هستند. برخی معماری ها نظیر ARM با Thumb-extension، دارای کدگذاری متغیر ترکیبی است که دو کدگذاری ثابت، معمولاً ۳۲ بیت و ۱۶ بیت است، که در آن، دستورالعمل ها را نمی توان به شکل آزادانه با هم ترکیب کرد، و باید در یک انشعاب (یا محدوده استثنا در ARMv8)، بین آنها تعویض انجام شود.<br>