Aprendendo Assembly
Doar para o autor
  • Introdução
  • Conteúdo
  • Como usar este livro
  • A base
    • Noção geral da arquitetura
    • Modos de operação
    • Sintaxe
    • Registradores de propósito geral
    • Endereçamento
    • Pilha
    • Saltos
    • Procedimentos
    • Seções e símbolos
    • Instruções assembly x86
    • Instruções do NASM
    • Pré-processador do NASM
    • Syscall no Linux
    • Olá mundo no Linux
    • Revisão
  • Aprofundando em Assembly
    • Registradores de segmento
    • CALL e RET
    • Position-independent executable
    • Atributos
    • Prefixos
    • Flags do processador
    • Instruções condicionais
    • Programando no MS-DOS
    • Interrupções de software e exceções
    • Procedimentos do BIOS
    • Usando instruções da FPU
    • Entendendo SSE
      • Instruções de movimentação de dados
      • Instruções aritméticas
      • Instruções lógicas e de comparação
      • Instruções com inteiros 128-bit
      • Instruções de conversão
  • Programando junto com C
    • Sintaxe do GAS
    • Convenção de chamada da System V ABI
    • Convenções de chamada no Windows
    • Variáveis em C
    • Funções em C
    • Ambiente hosted
    • Ambiente freestanding
    • Inline Assembly no GCC
    • Instruções intrínsecas
  • Depuração de código
    • Entendendo os depuradores
    • Depurando com o GDB
    • Depurando com o Dosbox
  • Apêndices
    • Código de máquina
      • Formato das instruções
      • Atributos e prefixos
      • Immediate
      • Displacement
      • ModR/M e SIB
      • Opcode
      • Prefixo REX
      • Codificação dos registradores
  • Metadados
    • TO DO
    • Referências
Powered by GitBook
On this page
  • Conversão entre double e float
  • CVTPS2PD | Convert packed single-precision floating-point values to packed double-precision floating-point values
  • CVTPD2PS | Convert packed double-precision floating-point values to packed single-precision floating-point values
  • CVTSS2SD | Convert scalar single-precision floating-point value to scalar double-precision floating-point value
  • CVTSD2SS | Convert scalar double-precision floating-point value to scalar single-precision floating-point value
  • Conversão entre double e inteiro
  • CVTPD2DQ/CVTTPD2DQ | Convert (with truncation) packed double-precision floating-point values to packed doubleword integers
  • CVTDQ2PD | Convert packed doubleword integers to packed double-precision floating-point values
  • CVTSD2SI/CVTTSD2SI | Convert scalar double-precision floating-point value to doubleword integer
  • CVTSI2SD | Convert doubleword integer to scalar double-precision floating-point value
  • Conversão entre float e inteiro
  • CVTPS2DQ/CVTTPS2DQ | Convert (with truncation) packed single-precision floating-point values to packed doubleword integers
  • CVTDQ2PS | Convert packed doubleword integers to packed single-precision floating-point values
  • CVTSS2SI/CVTTSS2SI | Convert scalar single-precision floating-point value to doubleword integer
  • CVTSI2SS | Convert doubleword integer to scalar single-precision floating-point value

Was this helpful?

Export as PDF
  1. Aprofundando em Assembly
  2. Entendendo SSE

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

CVTSD2SS xmm(n), xmm(n)
CVTSD2SS xmm(n), double(1)

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

CVTPD2DQ xmm(n), xmm(n)
CVTPD2DQ xmm(n), double(2)


CVTTPD2DQ xmm(n), xmm(n)
CVTTPD2DQ xmm(n), double(2)

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

CVTDQ2PD xmm(n), xmm(n)
CVTDQ2PD xmm(n), dword(2)

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 reg32/64, xmm(n)
CVTSD2SI reg32/64, double(1)

CVTTSD2SI reg32/64, xmm(n)
CVTTSD2SI reg32/64, double(1)

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

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

CVTSI2SD xmm(n), reg32/64
CVTSI2SD xmm(n), dword(1)
CVTSI2SD xmm(n), qword(1)

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

CVTPS2DQ xmm(n), xmm(n)
CVTPS2DQ xmm(n), float(4)


CVTTPS2DQ xmm(n), xmm(n)
CVTTPS2DQ xmm(n), float(4)

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

CVTDQ2PS xmm(n), xmm(n)
CVTDQ2PS xmm(n), dword(4)

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 reg32/64, xmm(n)
CVTSS2SI reg32/64, float(1)


CVTTSS2SI reg32/64, xmm(n)
CVTTSS2SI reg32/64, float(1)

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

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

CVTSI2SS xmm(n), reg32/64
CVTSI2SS xmm(n), dword(1)
CVTSI2SS xmm(n), qword(1)

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

PreviousInstruções com inteiros 128-bitNextProgramando junto com C

Last updated 3 years ago

Was this helpful?

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 ().

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
sign extension