STR

Store Task Register

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
0F 00 /1STR r/m16MValidoValidoTiendas selector de segmento de TR en r/m16.

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.

M

  1. modrm.rm escriturabyte 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

Tiendas el selector de segmento del registro de tareas (TR) en el operando de destino. El operando de destino puede ser un registro de proposito general o una ubicación de memoria. El selector de segmento almacenado con esta instrucción apunta al segmento del estado de tarea (TSS) para la tarea en curso.

Cuando el operando de destino es un registro de 32 bits, el selector de segmento de 16 bits se copia en los 16 bits inferiores del registro y los 16 bits superiores del registro se limpian. Cuando el operando de destino es una ubicación de memoria, el selector de segmento está escrito a la memoria como una cantidad de 16 bits, independientemente de tamaño de operando.

En modo de 64 bits, la operación es la misma. El tamaño del operando de memoria se fija en 16 bits. En las tiendas de registro, el TR de 2 bytes es cero extendido si se almacena en un registro de 64 bits.

La instrucción STR es útil sólo en el software del sistema operativo. Sólo se puede ejecutar en modo protegido.

Operación

DEST := TR(SegmentSelector);

Banderas afectadas

None.

Excepciones

Modo protegido
#GP(0)Si el destino es un operado de memoria que se encuentra en un segmento no escrito o si la dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. Si el registro DS, ES, FS o GS se utiliza para acceder a la memoria y contiene un selector de segmento NULL. Si CR4.UMIP = 1 y CPL > 0.
#SS(0)Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. #PF(fault-code) Si un fallo de pagina ocurre.
#AC(0)Si la comprobación de alineación está habilitada y se hace una referencia de memoria no alineada mientras que el nivel de privilegio actual es 3.
#UDSi se utiliza el prefijo LOCK.
Modo real
#UDLa instrucción STR no se reconoce en modo de direccion real.
Modo virtual-8086
#UDLa instrucción STR no se reconoce en modo virtual-8086.
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. Si CR4.UMIP = 1 y CPL > 0.
#SS(0)Si la dirección de la pila está en forma no canónica. #PF(fault-code) Si un fallo de pagina ocurre.
#AC(0)Si la comprobación de alineación está habilitada y se hace una referencia de memoria no alineada mientras que el nivel de privilegio actual es 3.
#UDSi se utiliza el prefijo LOCK.

Fuentes