NOP (کد)

مجموعه جهت های ماشین

برخی از دستورالعمل های کامپیوتری عبارتند از دستورالعملی که هدف روشن آن تغییر وضعیت هر یک از  پرچم‌ها، حافظه و یا ثبت کننده هایی که برنامه نویس به آنها دسترسی دارد،نیست. برای اجرا معمولاً تعداد مشخصی از چرخه های ساعت را استفاده می‌کند. در سایر مجموعه‌ی دستورالعمل ها، یک NOP می تواند با اجرای یک دستور با عملگرهایی که همان تاثیر را دارند، شبیه سازی شود؛ به عنوان مثال ، در پردازنده SPARC ، دستور sethi 0, %g0 راه حل توصیه شده است. 
NOP اغلب برای اهداف زمان بندی استفاده می شود، برای تنظیم حافظه ، جلوگیری از وقوع تغییرات ناخواسته ، ;کنترل اجراهایی که اجرای آنها تاثیری رو دستور در حال اجرا ندارد، برای خنثی کردن یک دستورالعمل موجود مانند پرش، و یابعدا در توسعه برنامه به عنوان نگهدارنده مکان با دستورالعمل های فعال جایگزین شود. (یا زمانی که سازماندهی دوباره مشکل یا وقت گیر است جایگزین دستورالعمل حذف شده می شود ). در برخی موارد، NOP می تواند عوارض جانبی جزئی داشته باشد؛ به عنوان مثال، درسری پردازنده موتورولا 68000، کد دستور (NOP (opcode  باعث هماهنگ سازی خط لوله می شود.  
دستور NOP برای یک سری از معماری های پردازنده ها در زیر آورده شده است : 
از نقطه نظر طراحی سخت افزار، قسمت های ناحیه ی BUS که مورد استفاده قرار نگرفته اند اغلب طراحی شده اند تا صفر را بازگردانند؛ از آنجا که رفتار اسلایدهای NOP اغلب مطلوب است،  به صورت یک طرفه زمان برنامه نویسی با کد های تمام صفر عمل میکند.

کد

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

C و مشتقات

خط دوم زیر یک نمونه از یک جمله C است که مانند NOP رفتار می کند. در عمل، اکثر کامپایلر ها کدی برای این دستور ایجاد نخواهند کرد: 
این دستور یک جمع انجام میدهد و نتیجه را رد می کند. در واقع، هر دستور بدون عوارض جانبی (که بر جریان کنترل تاثیر نمی‌گذارد، مانند قطع کردن، بازگشت) می تواند حذف شود، زیرا نتیجه محاسبات را نادیده می‌گیرد. 
ساده ترین دستور احتمالی در C که مانند NOP عمل می کند، به اصطلاح دستور null است ، که فقط یک نقطه ویرگول در زمان نیاز به یک دستور است. (کامپایلر لازم نیست که دستورالعمل NOP را در این مورد تولید کند؛ به طور معمول هیچ دستورالعملی تولید نمی‌شود.) 
 ؛ 
به طور متداول، یک بلوک خالی (دستورالعمل مرکب) ممکن است استفاده شود و ممکن است قابل خواندن باشد: 
 {} 
در برخی موارد، مانند بدنه یک تابع، یک بلوک باید استفاده شود، اما این می تواند خالی باشد. در C، دستورالعمل ها نمی‌توانند خالی باشد - دستورهای ساده باید با یک ؛ (نقطه ویرگول) تمام شوند، در حالیکه عبارات مرکب در {} (آکولاد) قرار میگیرند، که  نیازی به یک نقطه ویرگول  برای خود آگولاد نیست. بنابراین در مواردی که به دستوری  نیاز است، Null  میتواند مورد استفاده قرار بگیرد. 
دستور NULL به خودی خود بی فایده است، اما می توان آن را به نحو گسترده تری از جمله در یک حلقه استفاده کرد: 
از سوی دیگر، 
یا بیشتر: 
(توجه داشته باشید که آخرین فرم ممکن است گیج کننده باشد و به همین ترتیب یک هشدار را با برخی از کامپایلرها یا گزینه های کامپایلر ایجاد می کند؛ زیرا نقطه ویرگول معمولاً هنگامی که پس از یک پرانتز پرانتز در انتهای خط قرار می گیرد، انتهای دستور فراخوانی تابع را نشان می دهد). 
کد بالا به فراخوانی تابع getchar () تا زمانی که یک کاراکتر \ n (خط جدید) را بازگرداند ادامه میدهد، اساساً موقعیت خواندن فعلی ورودی  را به ابتدای خط بعدی انتقال می دهد.

فورتن

در Fortran، دستور CONTINUE در بعضی موارد مانند آخرین دستور در یک حلقه DO مورد استفاده قرار می گیرد، اگر چه می توان آن را در هر جایی استفاده کرد و هیچ کارایی نداشته باشد.

پاسکال

همانطور که با C  ؛ به تنهایی میتواند به عنوان دستور null استفاده شود. در حقیقت، به دلیل مشخصه زبان، در بلوک BEGIN / END، نقطه ویرگول قبل از عبارت END اختیاری است. 
همچنین یک بلوک متشکل از BEGIN END; ممکن است به عنوان یک حفره یا سوراخ برای نشان دادن هیچ اقدام، حتی اگر قرار داده شده در یکی دیگر از بلوک BEGIN / END استفاده شود.

پایتون

زبان برنامه نویسی Python دارای یک پایتون دستور pass است که وقتی اجرا می شود تاثیری ندارد و بنابراین به عنوان یک NOP عمل می کند.  به علت دستورکار  محرمانه حساس پایتون این عمدتاً برای اطمینان از درست بود دستورکار استفاده می شود ؛ برای مثال دستورکار برای تعریف یک کلاس نیاز به یک بلوک فاصله دار با منطق کلاس، که به عنوان  pass  هنگامی که آن  باید خالی  باشد بیان می شود

jQuery

کتابخانه jQuery تابع jQuery.noop() فراهم می کند که هیچ کاری انجام نمی‌دهد.

زاویه ای(َAngular)

چارچوب زاویه(Angular) تابع  angular.noop  که هیچ کاری انجام نمی‌دهد را فراهم می کند.

اسکریپت شل (,bash، zsh)

علامت  :  (دونقطه) یک ساختار پوسته است که دارای اثر مشابهی با "NOP" (هیچ کاری انجام نمی‌دهد) است. این به لحاظ فنی NOP نیست، زیرا پارامتر خاص ؟$ را به 0 تغییر می دهد (وضعیت خروج از آخرین دستور). این ممکن است مترادف پوسته  'true'  پیش فرض در نظر گرفته شود، و وضعیت خروج آن (true (0 است.

Lodash

کتابخانه Lodash یک تابع _.noop() که undefined را باز می گرداند و هیچ کاری نمی‌کند.

Cracking

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

رفتار امنیتی

کد NOP  را می توان برای ایجاد اسلایدهای NOP استفاده کرد ، که اجازه می دهد تا کد زمانی اجرا شود که مقدار دقیق اشاره گر دستورالعمل نامعلوم باشد (مثلاً زمانی که یک سرریز بافر یک آدرس بازگشتی تابع را در ستون(stack) را بازنویسی کند).