BNDCU, BNDCN
Check Upper Bound
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
F2 0F 1A /r | BNDCU bnd, r/m32 | RM | No codificable | Valido | Generar un #BR si la dirección en r/m32 es más alta que el límite superior en bnd.UB (bnb.UB en la forma de complemento de 1). |
F2 0F 1A /r | BNDCU bnd, r/m64 | RM | Valido | No codificable | Generar un #BR si la dirección en r/m64 es más alta que el límite superior en bnd.UB (bnb.UB en la forma de complemento de 1). |
F2 0F 1B /r | BNDCN bnd, r/m32 | RM | No codificable | Valido | Generar un #BR si la dirección en r/m32 es más alta que el límite superior en bnd.UB (bnb.UB no en la forma de complemento de 1). |
F2 0F 1B /r | BNDCN bnd, r/m64 | RM | Valido | No codificable | Generar un #BR si la dirección en r/m64 es más alta que el límite superior en bnd.UB (bnb.UB no en la forma de complemento de 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.
RM
modrm.regescriturabyte ModRM, campo reg (bits 5-3)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
Coste medido
Cargando las mediciones de arch-data...
Descripción
Compare la dirección en el segundo operando con el límite superior en bnd. El segundo operando puede ser un registro o un operando de memoria. Si la dirección es más alta que el límite superior en bnd.UB, establecerá BNDSTATUS a 01H y señale una excepción #BR.
BNDCU realizar 1's complemento operación en el borde superior de bnd primero antes de proceder con la comparación de la dirección. BNDCN realiza la comparación de direcciones directamente utilizando el límite superior en bnd que ya se revierte fuera de la forma de complemento de 1.
Esta instrucción no causa ningún acceso a la memoria, y no lee ni escribe ninguna bandera.
Computación de dirección efectiva de m32/64 tiene un comportamiento idéntico a LEA
Operación
BNDCU BND, reg
IF reg > NOT(BND.UB) Then
BNDSTATUS := 01H;
#BR;
FI;
BNDCU BND, mem
TEMP := LEA(mem);
IF TEMP > NOT(BND.UB) Then
BNDSTATUS := 01H;
#BR;
FI;
BNDCN BND, reg
IF reg > BND.UB Then
BNDSTATUS := 01H;
#BR;
FI;
BNDCN BND, mem
TEMP := LEA(mem);
IF TEMP > BND.UB Then
BNDSTATUS := 01H;
#BR;
FI;Intel C/C++ compilador intrínseco
BNDCU .void _bnd_chk_ptr_ubounds(const void *q);Banderas afectadas
None
Excepciones
Modo protegido
#BR | Si el cheque superior falla. |
#UD | Si el prefijo LOCK es utilizado. Si ModRM.r/m codifica BND4-BND7 cuando Intel MPX está habilitado. Si el prefijo 67H no se usa y CS.D=0. Si el prefijo 67H es usado y CS.D=1. |
Modo real
#BR | Si el cheque superior falla. |
#UD | Si el prefijo LOCK es utilizado. Si ModRM.r/m codifica BND4-BND7 cuando Intel MPX está habilitado. Si se utiliza la dirección de 16 bits. |
Modo virtual-8086
#BR | Si el cheque superior falla. |
#UD | Si el prefijo LOCK es utilizado. Si ModRM.r/m codifica BND4-BND7 cuando Intel MPX está habilitado. Si se utiliza la dirección de 16 bits. |
Modo de compatibilidad
| Las mismas excepciones que en modo protegido. |
Modo de 64 bits
#UD | Si ModRM.r/m y REX codifica BND4-BND15 cuando Intel MPX está habilitado. Las mismas excepciones que en modo protegido. |