stringtranslate.com

JMP (instrucción x86)

En el lenguaje ensamblador x86 , la instrucción realiza un salto incondicional. Una instrucción de este tipo transfiere el flujo de ejecución cambiando el contador del programa . Hay varios códigos de operación diferentes que realizan un salto; Dependiendo de si el procesador está en modo real o en modo protegido y se utiliza una instrucción de anulación, las instrucciones pueden tomar punteros de 16 bits , 32 bits o de segmento: desplazamiento . [1]JMP

Hay muchas formas diferentes de saltos: saltos relativos, condicionales , absolutos y de registro indirecto .

Los siguientes ejemplos ilustran:

  1. un salto relativo con un puntero de 16 bits;
  2. un salto largo (entre segmentos), un salto relativo con un puntero de 32 bits;
  3. y un salto absoluto indirecto de registro utilizando el registro EAX .

(Tenga en cuenta que, aunque el primer y segundo salto son relativos, normalmente se muestra la dirección de destino en lugar del desplazamiento relativo codificado en el código de operación).

Ejemplo uno: cargue IP con el nuevo valor 0x89AB, luego cargue CS con 0xACDCe IP con 0x5578.

JMP 0x89AB JMP 0xACDC : 0x5578  

Ejemplo dos: Cargar EIP con el valor 0x56789AB1, solo en modo protegido o modo irreal .

JMP 0x56789AB1 

Ejemplo tres: Saltar al valor almacenado en el registro EAX, solo en modo protegido.

JMP -EAX 

Referencias

  1. ^ "Manual del desarrollador de software de arquitectura Intel, volumen 2: manual de referencia del conjunto de instrucciones (6,5 MB)" (PDF) . Archivado desde el original (PDF) el 19 de febrero de 2009 . Consultado el 3 de noviembre de 2009 .

enlaces externos