JMP (x86 Instruktion)

Auf der x86 Zusammenbau-Sprache führt die Instruktion einen vorbehaltlosen Sprung durch. Solch eine Instruktion überträgt den Fluss der Ausführung durch das Ändern des Instruktionszeigestock-Registers. Es gibt mehrere verschiedene opcodes, die einen Sprung durchführen; je nachdem, ob der Verarbeiter in der echten Weise oder geschützten Weise ist, und wird eine überreiten Instruktion verwendet, die Instruktionen können 16 Bit, 32 Bit, oder segment:offset Zeigestöcke nehmen.

Es gibt viele verschiedene Formen von Sprüngen: relative, bedingte, absolute und mit dem Register indirekte Sprünge.

kann verwendet werden, um den Computer zu hängen. Zu sein, der verwendet ist, um sich auf dieselbe Position zu beziehen, wo die Instruktion anfängt. Das bedeutet, dass die Instruktion zu sich und dadurch dem Schaffen einer endlosen Schleife springen wird.

Die folgenden Beispiele illustrieren:

  1. ein Verhältnissprung mit einem 16-Bit-Zeigestock;
  2. ein Weitsprung (Zwischensegment), ein Verhältnissprung mit einem 32-Bit-Zeigestock;
  3. und ein mit dem Register indirekter absoluter Sprung mit dem EAX-Register.

(Bemerken Sie, dass, obwohl die ersten und zweiten Sprünge allgemein relativ sind, die Bestimmungsort-Adresse statt des Verhältnisausgleichs, wie verschlüsselt, im opcode gezeigt wird.)

Beispiel ein: Laden Sie IP mit dem neuen Wert, dann laden Sie CS mit und IP damit.

JMP 0x89AB

JMP 0xACDC:0x5578

</Quelle>

Beispiel zwei: Laden Sie IP mit dem Wert, nur in der geschützten Weise oder unwirklichen Weise.

JMP 0x56789AB1

</Quelle>

Beispiel drei: Sprung zum Wert, der im EAX-Register nur in der geschützten Weise versorgt ist.

JMP EAX

</Quelle>

Maurice Nicoll / Kathryn Hulme
Impressum & Datenschutz