NOP
В інформатиці NOP або NOOP (скорочення від англійського: «No OPeration») — інструкція процесора на мові асемблера, або команда протоколу, яка наказує нічого не робити.
Набір команд багатьох процесорів містить інструкцію, мета якої полягає не в тому, щоб змінити стан будь-якого регістра або комірки пам'яті, а в тому щоб затратити певну кількість тактів процесора. Для тих процесорів, в яких спеціальна інструкція відсутня, NOP імітується якоюсь іншою інструкцією з такими параметрами, що регістри і прапори не змінюються (наприклад в SPARC — процесорах як NOP рекомендується інструкція "sethi 0, %g0").
NOP'и зазвичай використовуються:
- для створення затримки на певний час, наприклад, в цілях синхронізації з іншими пристроями в комп'ютері. Зокрема: в мікроконтролерах AVR цифрові порти мають дуже високу швидкодію, і між комутацією вихідних портів і зчитуванням вхідних рекомендується встановити NOP, щоб схема встигла стабілізуватися;
- для заповнення пам'яті програм при вирівнюванні;
- для запобігання помилок в апаратній частині процесора;
- для передачі управління при конвеєрній організації обчислювального процесу;
- як заповнювач під час розробки програми;
- як заповнювач на місці видалених інструкцій, наприклад, при зломі програм (крякінг). Тобто код перевірки реєстраційного номера тощо замінюється на код, який нічого не робить.
- Назва: NOP
- Кількість використовуваних тактів : 3
- Розмір: 1 Байт
- Код машинної команди: 0x90
Насправді, інструкція NOP для x86 — процесорів є XCHG EAX, EAX або XCHG AX, AX, яка має той же опкод 0x90, і не робить ніякого ефекту, за винятком таких спеціальних випадків :
- Поєднання "REP NOP" (0xF3 0x90) в процесорах, починаючи з Xeon і Pentium 4, інтерпретується як команда PAUSE, повідомляючи процесору, що програма виконує цикл очікування зміни іншими процесорами стану комірки пам'яті, що дозволяє процесору оптимізувати роботу з пам'яттю і енергоспоживання.
- Толковый словарь по вычислительным системам / Под ред. В. Иллингуорта и др. — М.: Машиностроение, 1989. 568 с. (рос.)
- NOP ARM pseudo-instruction [Архівовано 30 червня 2020 у Wayback Machine.](англ.)