دستورالعمل اجرایی

در معماری مجموعه دستورات کامپیوتری (ISA)، یک **دستورالعمل اجرایی**، یک دستورالعمل زبان ماشین است که داده‌ها را به عنوان یک دستورالعمل ماشین در نظر می‌گیرد و آن را اجرا می‌کند.

می‌توان آن را چهارمین حالت توالی دستورات پس از اجرای متوالی معمولی، انشعاب و وقفه در نظر گرفت. از آنجایی که این دستورالعملی است که بر روی دستورالعمل‌های دیگری مانند دستورالعمل تکرار عمل می‌کند، به عنوان یک فرادستورالعمل نیز طبقه‌بندی شده‌است.

## مدل‌های کامپیوتری
بسیاری از خانواده‌های کامپیوتری معرفی شده در 1950s و 1960s شامل *اجرای* دستورالعمل: آی بی ام 709 و آی بی ام ۷۰۹۰ (کد OP حفظی : , IBM 7030 Stretch ( ,), PDP-1 / -4 / -9 / -15 (، UNIVAC 1100/2200 (), CDC 924 (), PDP-6 / -10 (), IBM System/360 ()، GE-600 / Honeywell 6000 ( ,), SDS-9xx ().

کمتر طراحی دهه ۱۹۷۰ شامل دستورالعمل‌های *اجرایی می‌شود.* یک دستورالعمل *اجرایی* برای PDP-11 در سال ۱۹۷۰ پیشنهاد شد، اما هرگز برای آن یا جانشین آن، VAX، اجرا نشد. معماری‌هایی با *دستورالعمل اجرا* عبارتند از: مینی کامپیوتر داده‌های هسته ای 812 (1971) ( , HP 3000 (1972) (، و Texas Instruments TI-990 (1975) و نسخه ریزپردازنده آن، TMS9900 (1976) ().

مجموعه‌های دستورالعمل مدرن شامل *دستورالعمل‌های اجرایی* نمی‌شوند، زیرا با خط لوله، واکشی اولیه و سایر بهینه‌سازی‌ها تداخل دارند.

## مفاهیم
دستوری که باید اجرا شود، دستور هدف، ممکن است در یک ثبات باشد یا از حافظه واکشی شود. برخی معماریهای اجازه می‌دهد که دستورالعمل مقصد را به خود *اجرا* می‌شود آموزش؛ دیگران نمی‌کنند.

دستور هدف به گونه ای اجرا می‌شود که گویی در محل حافظه دستور *اجرا قرار دارد.* به عنوان مثال، اگر یک دستور فراخوانی زیربرنامه باشد، اجرا به زیربرنامه منتقل می‌شود و مکان بازگشتی، مکان بعد از دستورالعمل *اجرا است.* با این حال، برخی از معماری‌ها انواعی از *دستورالعمل‌های اجرا را* اجرا می‌کنند که شاخه‌ها را مهار می‌کنند.

System/360 از دستورالعمل‌های هدف با طول متغیر پشتیبانی می‌کند. همچنین از اصلاح دستورالعمل هدف قبل از اجرای آن پشتیبانی می‌کند. دستورالعمل هدف باید از یک بایت زوج شروع شود.

سری GE-600 از اجرای توالی‌های دو دستورالعملی پشتیبانی می‌کند که باید با دو کلمه تراز شوند.

برخی از معماری‌ها از یک *دستورالعمل اجرایی* پشتیبانی می‌کنند که در حالت حفاظت و تغییر مکان آدرس متفاوت عمل می‌کند. به عنوان مثال، دستگاه پیجینگ ITS PDP-10 از یک حالت ممتاز پشتیبانی می‌کند 'execute relocated' که به حافظه اجازه می‌دهد بخواند، بنویسد، یا هر دو را برای استفاده از نگاشت صفحه حالت کاربر استفاده کند. به‌طور مشابه، نوع KL10 PDP-10 از دستورالعمل ممتاز پشتیبانی می‌کند. «زمینه قبلی XCT».

آموزش *اجرای* چند مشکلاتی را هنگامی که یک *اجرا* نقاط آموزش به یک دیگر و به همین ترتیب:
* اگر *دستور اجرا* در اواسط اجرا قطع نشود ممکن است پردازنده برای چندین سیکل ساعت غیرقابل وقفه باشد.
* به‌طور مشابه، پردازنده ممکن است به یک حلقه بی‌نهایت اگر سری از *اجرای* دستورالعمل دایره ای و اضطراری است بروید.
* اگر دستورالعمل‌های *اجرا* در صفحات مختلف مبادله هستند، همه صفحات باید برای تکمیل دستورالعمل جابجا شوند، که می‌تواند باعث thrashing شود.

مسائل مشابهی با حالت‌های آدرس دهی غیرمستقیم چندسطحی به وجود می‌آید.

## کاربردها
*دستورالعمل اجرا* چندین کاربرد دارد:
* عملکرد به عنوان یک زیربرنامه تک دستوره، که در صورت لزوم ممکن است یک زیربرنامه کامل را فراخوانی کند.
* دیر صحافی
** اجرای فراخوانی با نام و سایر حرکات.
** جدولی از اهداف اجرا شده ممکن است برای ارسال پویا متدها یا توابع مجازی یک شی یا کلاس استفاده شود، به خصوص زمانی که متد یا تابع اغلب به صورت یک دستورالعمل قابل پیاده‌سازی است.
** یک هدف اجرا شده ممکن است حاوی یک قلاب برای افزودن قابلیت یا اشکال زدایی باشد. معمولاً به عنوان یک NOP مقداردهی اولیه می‌شود که ممکن است به صورت پویا لغو شود.
** یک هدف اجرا شده ممکن است بین یک نسخه سریع یک عملیات و یک نسخه کاملاً ردیابی شده تغییر کند.
* ردیابی، نظارت و شبیه‌سازی
** این ممکن است یک شمارنده شبه برنامه را حفظ کند و شمارنده برنامه عادی را بدون تغییر باقی بگذارد.
* اجرای کدهای تولید شده به صورت پویا، به خصوص زمانی که حفاظت از حافظه مانع از قابل نوشتن کدهای اجرایی می‌شود.
* تقلید کد خود اصلاح، به ویژه هنگامی که آن را باید را reentrant یا فقط خواندنی.
* در IBM System/360، *دستورالعمل اجرا* می‌تواند بیت‌های ۸–۱۵ دستورالعمل هدف را تغییر دهد، و به‌طور مؤثر یک دستورالعمل با یک آرگومان ثابت (مثلاً یک فیلد طول) را به یک دستورالعمل با یک آرگومان متغیر تبدیل کند.
* *دستورالعمل‌های اجرای* حالت ممتاز مانند KL10 توسط هسته‌های سیستم عامل برای اجرای عملیاتی مانند بلوک کپی‌ها در فضای مجازی فرآیندهای کاربر استفاده می‌شود.

## منابع

رده:پردازش دستورها
رده:معماری‌های مجموعه دستورالعمل
رده:واحد پردازشگر مرکزی