BNDMK
Hacer libras
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
F3 0F 1B /r | BNDMK bnd, m32 | RM | No codificable | Valido | Hacer límites inferiores y superiores de m32 y almacenarlos en bnd. |
F3 0F 1B /r | BNDMK bnd, m64 | RM | Valido | No codificable | Hacer límites inferiores y superiores de m64 y almacenarlos en bnd. |
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
Hace límites desde el segundo operando y almacena los bordes inferiores y superiores en el registro atado bnd. El segundo operando debe ser un operando de memoria. El contenido del registro base del operando de memoria se almacena en el bnd.LB inferior. El complemento 1 de la dirección efectiva de m32/m64 se almacena en el b.UB del límite superior. La computación de m32/m64 tiene un comportamiento idéntico a LEA.
Esta instrucción no causa ningún acceso a la memoria, y no lee ni escribe ninguna bandera.
Si la instrucción no especificaba el registro base, el límite inferior será cero. La forma reg-reg de esta instrucción retiene el comportamiento legado (NOP).
La instrucción causa una excepción de código de operación no válido (#UD) si se ejecuta en modo de 64 bits con dirección relativa RIP.
Operación
BND.LB := SRCMEM.base;
IF 64-bit mode Then
BND.UB := NOT(LEA.64_bits(SRCMEM));
ELSE
BND.UB := Zero_Extend.64_bits(NOT(LEA.32_bits(SRCMEM)));
FI;Intel C/C++ compilador intrínseco
BNDMKvoid * _bnd_set_ptr_bounds(const void * q, size_t size);Banderas afectadas
None.
Excepciones
Modo protegido
#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
#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
#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 el prefijo LOCK es utilizado. Si ModRM.r/m y REX codifica BND4-BND15 cuando Intel MPX está habilitado. Si se utiliza el tratamiento relacionado con RIP. |
#SS(0) | Si la dirección de memoria que hace referencia al segmento SS está en forma no canónica. |
#GP(0) | Si la dirección de memoria está en forma no canónica. Las mismas excepciones que en modo protegido. |