2
일부 코드를 Windows로 포팅하고 (figh) fesetround를 사용해야합니다. 내가는 MinGW에서 구현을 복사에 대해 그것을 해킹 x86 용 있도록 MSVC는 C99를 지원하지 않습니다MSVC x64로 fesetround
//__asm__ volatile ("fnstcw %0;": "=m" (_cw));
__asm { fnstcw _cw }
_cw &= ~(FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO);
_cw |= mode;
//__asm__ volatile ("fldcw %0;" : : "m" (_cw));
__asm { fldcw _cw }
if (has_sse) {
unsigned int _mxcsr;
//__asm__ volatile ("stmxcsr %0" : "=m" (_mxcsr));
__asm { stmxcsr _mxcsr }
_mxcsr &= ~ 0x6000;
_mxcsr |= (mode << __MXCSR_ROUND_FLAG_SHIFT);
//__asm__ volatile ("ldmxcsr %0" : : "m" (_mxcsr));
__asm { ldmxcsr _mxcsr }
}
주석 처리 된 줄은 GCC의 원본이다; msvc에 대한 주석 처리가 제거되었습니다. 이것은 효과가있는 것처럼 보입니다.
그러나 x64 cl.exe는 인라인 asm을 지원하지 않으므로 막혔습니다. 거기에 내가 "빌릴 수있는"몇 가지 코드가 있습니까? (Google과 시간을 보냈습니다.) 아니면 몇 가지 어셈블리를 배우고 MASM을 사용하는 방법을 파악하기 위해 2 주간의 우회로를 가야합니까? 모든 조언을 부탁드립니다. 고맙습니다.
티켓입니다. 감사. –