Nulloperation

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. April 2018 um 22:40 Uhr durch Aka (Diskussion | Beiträge) (→‎Prozessoranweisung: Abkürzung korrigiert). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen

Die Nulloperation (englisch No Operation; Assembler-Mnemonic: NOP oder NOOP) ist ein Befehl – genauer eine Prozessoranweisung – in Maschinenprogrammen oder Kommunikationsprotokollen, der nichts bewirkt.

Prozessoranweisung

Auf einem Mikroprozessor bewirkt das Ausführen einer NOP-Instruktion nichts, außer dem Inkrementieren des Befehlszählers und dem Zeitverbrauch für das Holen dieses Befehls aus dem Arbeitsspeicher und seiner Interpretation. Der Opcode der Instruktion ist zwischen einem und neun Bytes lang.

Auf x86-kompatiblen Prozessoren ist die ursprüngliche Variante der ein Byte lange NOP-Befehl mit dem Opcode 0x90, der ein Alias für XCHG (E)AX, (E)AX, d. h. dem Austausch des Registerwertes mit sich selbst, ist und auf allen x86-Prozessoren implementiert ist. Die Multi-Byte-Variante wird ggf. nicht von allen Prozessoren unterstützt.

Der Befehl wird verwendet, um

  • ein bestimmtes Alignment im Speicher herzustellen,
  • bestehende Befehle im direkten Maschinencode zu "löschen", indem sie mit NOP-Befehlen überschrieben werden,
  • eine – normalerweise allerdings nur grob vorhersagbare – Zeitverzögerung zu bewirken (ggf. in einer Schleife mehrfach aufgerufen), beispielsweise um durch Race Conditions ausgelöste Fehler zu vermeiden oder das Timing eines externen Signals zu definieren,
  • Pipeline-Hazards zu verhindern,
  • einen Branch Delay Slot zu füllen oder
  • als „Füllmaterial“ bei nicht genutztem Speicher (z. B. BIOS, ROMs oder eingebetteten Systemen).

Befehl in Kommunikationsprotokollen

In folgenden Kommunikationsprotokollen ist ein NOOP-Befehl implementiert, den der Klient senden kann, ohne dass der Server eine Aktion durchführen muss:

Siehe auch

  • IEFBR14 (als Beispiel für einen „leeren“ Befehl auf anderer Ebene).

Literatur

Einzelnachweise

  1. RFC 2060