Jcc
Saltar si la condición es Met
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
77 cb | JA rel8 | D | Valido | Valido | Salto corto si arriba (CF=0 y ZF=0). |
73 cb | JAE rel8 | D | Valido | Valido | Salto corto si arriba o igual (CF=0). |
72 cb | JB rel8 | D | Valido | Valido | Salta corto si abajo (CF=1). |
76 cb | JBE rel8 | D | Valido | Valido | Salta corto si es inferior o igual (CF=1 o ZF=1). |
72 cb | JC rel8 | D | Valido | Valido | Salta corto si lleva (CF=1). |
E3 cb | JCXZ rel8 | D | No codificable | Valido | Salto corto si el registro CX es 0. |
E3 cb | JECXZ rel8 | D | Valido | Valido | Salto corto si el registro ECX es 0. |
E3 cb | JRCXZ rel8 | D | Valido | No codificable | Salto corto si el registro RCX es 0. |
74 cb | JE rel8 | D | Valido | Valido | Salta corto si es igual (ZF=1). |
7F cb | JG rel8 | D | Valido | Valido | Salta corto si es mayor (ZF=0 y SF=OF). |
7D cb | JGE rel8 | D | Valido | Valido | Salta corto si es mayor o igual (SF=OF). |
7C cb | JL rel8 | D | Valido | Valido | Salta corto si menos (SF OF). |
7E cb | JLE rel8 | D | Valido | Valido | Salta corto si es menos o igual (ZF=1 o SF OF). |
76 cb | JNA rel8 | D | Valido | Valido | Salta corto si no por encima (CF=1 o ZF=1). |
72 cb | JNAE rel8 | D | Valido | Valido | Salta corto si no por encima o por igual (CF=1). |
73 cb | JNB rel8 | D | Valido | Valido | Salto corto si no debajo (CF=0). |
77 cb | JNBE rel8 | D | Valido | Valido | Saltar corto si no es inferior o igual (CF=0 y ZF=0). |
73 cb | JNC rel8 | D | Valido | Valido | Salto corto si no lleva (CF=0). |
75 cb | JNE rel8 | D | Valido | Valido | Salto corto si no igual (ZF=0). |
7E cb | JNG rel8 | D | Valido | Valido | Saltar corto si no mayor (ZF=1 o SF OF). |
7C cb | JNGE rel8 | D | Valido | Valido | Saltar corto si no mayor o igual (SF OF). |
7D cb | JNL rel8 | D | Valido | Valido | Salta corto si no menos (SF=OF). |
7F cb | JNLE rel8 | D | Valido | Valido | Salta corto si no menos o igual (ZF=0 y SF=OF). |
71 cb | JNO rel8 | D | Valido | Valido | Saltar corto si no desbordamiento (OF=0). |
7B cb | JNP rel8 | D | Valido | Valido | Saltar corto si no paridad (PF=0). |
79 cb | JNS rel8 | D | Valido | Valido | Saltar corto si no firmar (SF=0). |
75 cb | JNZ rel8 | D | Valido | Valido | Salto corto si no cero (ZF=0). |
70 cb | JO rel8 | D | Valido | Valido | Saltar corto si desbordamiento (OF=1). |
7A cb | JP rel8 | D | Valido | Valido | Salta corto si paridad (PF=1). |
7A cb | JPE rel8 | D | Valido | Valido | Salta corto si la paridad incluso (PF=1). |
7B cb | JPO rel8 | D | Valido | Valido | Saltear corto si paridad extraña (PF=0). |
78 cb | JS rel8 | D | Valido | Valido | Saltar corto si signo (SF=1). |
74 cb | JZ rel8 | D | Valido | Valido | Salto corto si cero (ZF = 1). |
0F 87 cw | JA rel16 | D | No soportado | Valido | Saltar cerca de si arriba (CF=0 y ZF=0). No compatible con el modo 64-bit. |
0F 87 cd | JA rel32 | D | Valido | Valido | Saltar cerca si arriba (CF=0 y ZF=0). |
0F 83 cw | JAE rel16 | D | No soportado | Valido | Saltar cerca de si arriba o igual (CF=0). No compatible con el modo 64-bit. |
0F 83 cd | JAE rel32 | D | Valido | Valido | Saltar cerca de si arriba o igual (CF=0). |
0F 82 cw | JB rel16 | D | No soportado | Valido | Saltar cerca de si abajo (CF=1). No compatible con el modo 64-bit. |
0F 82 cd | JB rel32 | D | Valido | Valido | Saltar cerca de si abajo (CF=1). |
0F 86 cw | JBE rel16 | D | No soportado | Valido | Saltar cerca de si abajo o igual (CF=1 o ZF=1). No compatible con el modo 64-bit. |
0F 86 cd | JBE rel32 | D | Valido | Valido | Saltar cerca de si abajo o igual (CF=1 o ZF=1). |
0F 82 cw | JC rel16 | D | No soportado | Valido | Saltar cerca si llevar (CF=1). No compatible con el modo 64-bit. |
0F 82 cd | JC rel32 | D | Valido | Valido | Saltar cerca si llevar (CF=1). |
0F 84 cw | JE rel16 | D | No soportado | Valido | Saltar cerca de si es igual (ZF=1). No se admite en modo de 64 bits. |
0F 84 cd | JE rel32 | D | Valido | Valido | Saltar cerca si es igual (ZF=1). |
0F 84 cw | JZ rel16 | D | No soportado | Valido | Saltar cerca de 0 (ZF=1). No compatible con el modo 64-bit. |
0F 84 cd | JZ rel32 | D | Valido | Valido | Saltar cerca de 0 (ZF=1). |
0F 8F cw | JG rel16 | D | No soportado | Valido | Saltar cerca de si es mayor (ZF=0 y SF=OF). No se admite en modo de 64 bits. |
0F 8F cd | JG rel32 | D | Valido | Valido | Saltar cerca si es mayor (ZF=0 y SF=OF). |
0F 8D cw | JGE rel16 | D | No soportado | Valido | Saltar cerca de si es mayor o igual (SF=OF). No se admite en modo de 64 bits. |
0F 8D cd | JGE rel32 | D | Valido | Valido | Saltar cerca si es mayor o igual (SF=OF). |
0F 8C cw | JL rel16 | D | No soportado | Valido | Saltar cerca de si menos (SF OF). No se admite en modo de 64 bits. |
0F 8C cd | JL rel32 | D | Valido | Valido | Saltar cerca si menos (SF OF). |
0F 8E cw | JLE rel16 | D | No soportado | Valido | Saltar cerca de si menos o igual (ZF=1 o SF OF). No compatible con el modo 64-bit. |
0F 8E cd | JLE rel32 | D | Valido | Valido | Saltar cerca de si menos o igual (ZF=1 o SF OF). |
0F 86 cw | JNA rel16 | D | No soportado | Valido | Saltar cerca si no por encima (CF=1 o ZF=1). No compatible con el modo 64-bit. |
0F 86 cd | JNA rel32 | D | Valido | Valido | Saltar cerca si no por encima (CF=1 o ZF=1). |
0F 82 cw | JNAE rel16 | D | No soportado | Valido | Saltar cerca si no por encima o por igual (CF=1). No se admite en modo de 64 bits. |
0F 82 cd | JNAE rel32 | D | Valido | Valido | Saltar cerca si no por encima o igual (CF=1). |
0F 83 cw | JNB rel16 | D | No soportado | Valido | Saltar cerca si no debajo (CF=0). No está soportado en modo de 64 bits. |
0F 83 cd | JNB rel32 | D | Valido | Valido | Saltar cerca si no abajo (CF=0). |
0F 87 cw | JNBE rel16 | D | No soportado | Valido | Saltar cerca si no es inferior o igual (CF=0 y ZF=0). No compatible con el modo 64-bit. |
0F 87 cd | JNBE rel32 | D | Valido | Valido | Saltar cerca si no por debajo o por igual (CF=0 y ZF=0). |
0F 83 cw | JNC rel16 | D | No soportado | Valido | Saltar cerca si no llevar (CF=0). No compatible con el modo 64-bit. |
0F 83 cd | JNC rel32 | D | Valido | Valido | Saltar cerca si no llevar (CF=0). |
0F 85 cw | JNE rel16 | D | No soportado | Valido | Saltar cerca si no es igual (ZF=0). No se admite en modo de 64 bits. |
0F 85 cd | JNE rel32 | D | Valido | Valido | Saltar cerca si no es igual (ZF=0). |
0F 8E cw | JNG rel16 | D | No soportado | Valido | Saltar cerca si no mayor (ZF=1 o SF OF). No compatible con el modo 64-bit. |
0F 8E cd | JNG rel32 | D | Valido | Valido | Saltar cerca si no mayor (ZF=1 o SF OF). |
0F 8C cw | JNGE rel16 | D | No soportado | Valido | Saltar cerca si no mayor o igual (SF OF). No apoyado en modo de 64 bits. |
0F 8C cd | JNGE rel32 | D | Valido | Valido | Saltar cerca si no es mayor o igual (SF OF). |
0F 8D cw | JNL rel16 | D | No soportado | Valido | Salta cerca si no menos (SF=OF). No se admite en modo de 64 bits. |
0F 8D cd | JNL rel32 | D | Valido | Valido | Saltar cerca si no menos (SF=OF). |
0F 8F cw | JNLE rel16 | D | No soportado | Valido | Saltar cerca si no menos o igual (ZF=0 y SF=OF). No compatible con el modo 64-bit. |
0F 8F cd | JNLE rel32 | D | Valido | Valido | Saltar cerca si no menos o igual (ZF=0 y SF=OF). |
0F 81 cw | JNO rel16 | D | No soportado | Valido | Saltar cerca si no desbordamiento (OF=0). No está soportado en modo de 64 bits. |
0F 81 cd | JNO rel32 | D | Valido | Valido | Saltar cerca si no desbordamiento (OF=0). |
0F 8B cw | JNP rel16 | D | No soportado | Valido | Saltar cerca si no la paridad (PF=0). No se admite en modo de 64 bits. |
0F 8B cd | JNP rel32 | D | Valido | Valido | Saltar cerca si no paridad (PF=0). |
0F 89 cw | JNS rel16 | D | No soportado | Valido | Saltar cerca si no firmar (SF=0). No se admite en modo de 64 bits. |
0F 89 cd | JNS rel32 | D | Valido | Valido | Saltar cerca si no firmar (SF=0). |
0F 85 cw | JNZ rel16 | D | No soportado | Valido | Saltar cerca de si no cero (ZF=0). No se admite en modo de 64 bits. |
0F 85 cd | JNZ rel32 | D | Valido | Valido | Saltar cerca si no cero (ZF=0). |
0F 80 cw | JO rel16 | D | No soportado | Valido | Saltar cerca si el desbordamiento (OF=1). No se admite en modo de 64 bits. |
0F 80 cd | JO rel32 | D | Valido | Valido | Saltar cerca si el desbordamiento (OF=1). |
0F 8A cw | JP rel16 | D | No soportado | Valido | Saltar cerca si la paridad (PF=1). No se admite en modo de 64 bits. |
0F 8A cd | JP rel32 | D | Valido | Valido | Saltar cerca si la paridad (PF=1). |
0F 8A cw | JPE rel16 | D | No soportado | Valido | Saltar cerca si la paridad incluso (PF=1). No se admite en modo de 64 bits. |
0F 8A cd | JPE rel32 | D | Valido | Valido | Saltar cerca si la paridad incluso (PF=1). |
0F 8B cw | JPO rel16 | D | No soportado | Valido | Saltar cerca de si la paridad es impar (PF=0). |
0F 8B cd | JPO rel32 | D | Valido | Valido | Saltar cerca de si paridad extraña (PF=0). |
0F 88 cw | JS rel16 | D | No soportado | Valido | Saltar cerca de si signo (SF=1). No compatible con el modo 64-bit. |
0F 88 cd | JS rel32 | D | Valido | Valido | Saltar cerca de si señal (SF=1). |
0F 84 cw | JZ rel16 | D | No soportado | Valido | Saltar cerca de 0 (ZF=1). No compatible con el modo 64-bit. |
0F 84 cd | JZ rel32 | D | Valido | Valido | Saltar cerca de 0 (ZF=1). |
Codificacion de operandos
Cada modo es un valor de la columna Op/En de arriba. Dice en que campo de la instruccion codificada va cada operando, en el orden en que se escriben, y si la instruccion lo lee, lo escribe o ambas cosas.
D
offsetdesplazamiento que sigue al opcode
Coste medido
Cargando las mediciones de arch-data...
Descripción
Comprueba el estado de uno o más de las banderas de estado en el registro EFLAGS (CF, OF, PF, SF y ZF) y, si las banderas están en el estado especificado (condición), realiza un salto a la instrucción de destino especificada por el operando de destino. Un código de condición (cc) se asocia con cada instrucción para indicar la condición que se está probando. Si la condición no está satisfecha, el salto no se realiza y la ejecución continúa con la instrucción siguiendo la instrucción Jcc.
La instrucción de destino se especifica con un offset relativo (un offset firmado en relación con el valor actual del puntero de instruccion en el registro EIP). Un offset relativo (rel8, rel16, o rel32) se especifica generalmente como una etiqueta en código de montaje, pero a nivel de código de máquina, se codifica como un valor inmediato firmado, de 8 bits o de 32 bits, que se añade al puntero de instruccion. La codificación de instrucciones es más eficiente para los offsets de 128 a +127. Si el atributo el operando-size es 16, los dos bytes superiores del registro EIP se limpian, dando como resultado un tamaño máximo puntero de instruccion de 16 bits.
Las condiciones para cada Jcc mnemonic se dan en la columna "Descripción" de la tabla en la página anterior. Los términos "menos" y "mayor" se utilizan para las comparaciones de enteros con signo y los términos "arriba" y "bajo" se utilizan para enteros sin signo.
Debido a que un estado particular de las banderas de estado puede a veces ser interpretado de dos maneras, dos mnemonics se definen para algunos códigos de operación. Por ejemplo, la instrucción JA (jump if above) y la instrucción JNBE (jump if not below or equal) son mnemonics suplentes para el código de operación 77H.
La instrucción Jcc no soporta saltos lejanos (jugos a otros segmentos de código). Cuando el objetivo para el salto condicional está en un segmento diferente, use la condición opuesta de la condición que se está probando para la instrucción Jcc, y luego acceda al objetivo con un salto lejano incondicional (instrucción JMP) al otro segmento. Por ejemplo, el siguiente salto condicional es ilegal:
JZ FARLABEL;
Para lograr este salto lejano, utilice las siguientes dos instrucciones: JNZ BEYOND; JMP FARLABEL; BEYOND:
Las instrucciones JRCXZ, JECXZ y JCXZ difieren de otras instrucciones de Jcc porque no verifican banderas de estado. En lugar de eso, verifican RCX, ECX o CX para 0. El registro es determinado por el atributo tamaño de la dirección. Estas instrucciones son útiles cuando se utilizan al principio de un bucle que termina con una instrucción de bucle condicional (como LOOPNE). Se pueden utilizar para evitar que una secuencia de instrucciones entre en un bucle cuando RCX, ECX o CX es 0. Esto haría que el bucle ejecutara 264, 232 o 64K veces (no cero veces).
Todos los saltos condicionales se convierten en garras de código de una o dos líneas de caché, independientemente de la dirección de salto o caqueabilidad.
En modo de 64 bits, tamaño de operando se fija en 64 bits. JMP Short es RIP = RIP + signo de compensación de 8 bits extendido a 64 bits. JMP Cerca es RIP = RIP + 32 bits de señal offset extendido a 64 bits.
Operación
IF condition
THEN
tempEIP := EIP + SignExtend(DEST);
IF OperandSize = 16
THEN tempEIP := tempEIP AND 0000FFFFH;
FI;
IF tempEIP is not within code segment limit
THEN #GP(0);
ELSE EIP := tempEIP
FI;
FI;Banderas afectadas
None.
Excepciones
Modo protegido
#GP(0) | Si el offset está más allá de los límites del segmento CS. |
#UD | Si se utiliza el prefijo LOCK. |
Modo real
#GP | Si el offset está más allá de los límites del segmento CS o está fuera del espacio de dirección eficaz de 0 a FFFFH. Esta afección puede ocurrir si se utiliza un prefijo de la dirección de 32 bits. |
#UD | Si se utiliza el prefijo LOCK. |
Modo virtual-8086
| Las mismas excepciones que en modo de dirección real. |
Modo de compatibilidad
| Las mismas excepciones que en modo protegido. |
Modo de 64 bits
#GP(0) | Si la dirección de memoria está en forma no canónica. |
#UD | Si se utiliza el prefijo LOCK. |