Partilhar via


MxCsr

O estado do registro também inclui o MxCsr. A convenção de chamada divide a esse registro em uma parte volátil e uma parte não-volátil. A parte volátil consiste nos sinalizadores de status de 6, MXCSR [0: 5], enquanto o restante do registrador, MXCSR [6: 15] é considerado não-volátil.

A parte não-volátil é definida para os seguintes valores padrão no início da execução do programa:

MXCSR[6]         : Denormals are zeros - 0
MXCSR[7:12]      : Exception masks all 1's (all exceptions masked)
MXCSR[13:14]   : Rounding  control - 0 (round to nearest)
MXCSR[15]      : Flush to zero for masked underflow - 0 (off)

Um receptor que modifica qualquer um dos campos não-volátil em MXCSR deve restaurá-las antes de retornar para seu chamador. Além disso, um chamador que tenha modificado qualquer um desses campos deve restaurá-las aos seus valores padrão antes de invocar um receptor, a menos que o contrato o receptor espera que os valores modificados.

Existem duas exceções às regras sobre a volatilidade do não-dos sinalizadores de controle:

  • Nas funções onde a finalidade documentada de determinada função é modificar o MxCsr não-volátil sinalizadores.

  • Quando está provavelmente correto que a violação dessas regras resulta em um programas que se comporta-las/significa o mesmo que um programa onde essas regras não estão violadas, por exemplo, por meio da análise do programa inteiro.

Podem ser feitas suposições sobre o estado da parte volátil de MXCSR em um limite de função, a menos que especificamente descrito na documentação de uma função.

Consulte também

Referência

Convenção de chamada