Instruções de conversão

Convertendo valores entre float, double e inteiro.

Essas instruções servem para conversão de tipos entre float, double e inteiro.

Conversão entre double e float

CVTPS2PD | Convert packed single-precision floating-point values to packed double-precision floating-point values

CVTPS2PD xmm(n), xmm(n)
CVTPS2PD xmm(n), float(2)

Converte dois valores float do operando fonte (segundo) em dois valores double no operando destino (primeiro).

CVTPD2PS | Convert packed double-precision floating-point values to packed single-precision floating-point values

CVTPD2PS xmm(n), xmm(n)
CVTPD2PS xmm(n), double(2)

Converte dois valores double do operando fonte (segundo) em dois valores float no operando destino (primeiro).

CVTSS2SD | Convert scalar single-precision floating-point value to scalar double-precision floating-point value

CVTSS2SD xmm(n), xmm(n)
CVTSS2SD xmm(n), float(1)

Converte um valor float do operando fonte (segundo) em um valor double no operando destino (primeiro).

CVTSD2SS | Convert scalar double-precision floating-point value to scalar single-precision floating-point value

Converte um valor double do operando fonte (segundo) em um valor float no operando destino (primeiro).

Conversão entre double e inteiro

CVTPD2DQ/CVTTPD2DQ | Convert (with truncation) packed double-precision floating-point values to packed doubleword integers

Converte os dois doubles no operando fonte para dois inteiros sinalizados de 32-bit no operando destino. A instrução CVTPD2DQ faz o arredondamento normal do valor enquanto CVTTPD2DQ trunca ele.

CVTDQ2PD | Convert packed doubleword integers to packed double-precision floating-point values

Converte os dois inteiros sinalizados de 32-bit no operando fonte para dois doubles no operando destino.

CVTSD2SI/CVTTSD2SI | Convert scalar double-precision floating-point value to doubleword integer

CVTSD2SI converte o valor double no operando fonte em inteiro de 32-bit sinalizado, e armazena o valor no registrador de propósito geral do operando destino. O registrador destino também pode ser um registrador de 64-bit onde nesse caso o valor sofrerá extensão de sinal (sign extension).

CVTTSD2SI faz a mesma coisa porém truncando o valor.

CVTSI2SD | Convert doubleword integer to scalar double-precision floating-point value

Converte o valor inteiro sinalizado de 32 ou 64 bits do operando fonte e armazena como um double no operando destino.

Conversão entre float e inteiro

CVTPS2DQ/CVTTPS2DQ | Convert (with truncation) packed single-precision floating-point values to packed doubleword integers

Converte quatro floats do operando fonte em quatro inteiros sinalizados de 32-bit no operando destino. A instrução CVTPS2DQ faz o arredondamento normal dos valores enquanto CVTTPS2DQ trunca eles.

CVTDQ2PS | Convert packed doubleword integers to packed single-precision floating-point values

Converte quatro inteiros sinalizados de 32-bit no operando fonte para quatro floats no operando destino.

CVTSS2SI/CVTTSS2SI | Convert scalar single-precision floating-point value to doubleword integer

CVTSS2SI converte o valor float no operando fonte em inteiro de 32-bit sinalizado, e armazena o valor no registrador de propósito geral do operando destino. O registrador destino também pode ser um registrador de 64-bit onde nesse caso o valor sofrerá extensão de sinal (sign extension).

A instrução CVTTSS2SI faz a mesma coisa porém truncando o valor.

CVTSI2SS | Convert doubleword integer to scalar single-precision floating-point value

Converte o valor inteiro sinalizado de 32 ou 64 bits do operando fonte e armazena como um float no operando destino.

Last updated

Was this helpful?