3
꽤 많은 기사에서 float-> integer를 빠르게 변환하기 위해 fistp
명령어를 사용하는 것이 좋습니다. 이것은 CPU의 현재 반올림 모드에 따라 다르므로 설정해야합니다.언제 CPU의 반올림 모드가 바뀔 수 있습니까?
그러나 다른 프로그램에서 프로그램 실행 중에이 반올림 모드가 변경 될 수 있습니까? OS 별로요?
더욱 악화 될 수있는 가능한 시나리오 (의사 코드)입니까?
set_rounding_mode(ROUND_TRUNCATE);
/* process gets switched out and other process sets the rounding mode to round */
int x = round_with_fistp(0.6);
printf("%d\n", x); // prints 1
나는 대답이 '아니오'라고 생각합니다. 부동 소수점 모드는 컨텍스트 스위치를 통해 저장해야하는 많은 것들 중 하나입니다. – Mysticial