다음을 통해 공유


/QIPF_fr32(상위 96 부동 소수점 레지스터 사용 안 함)

Itanium에 대한 컴파일 시 컴파일러에서 하위 32 부동 소수점 레지스터만 사용하고 상위 96 부동 소수점 레지스터는 사용하지 않도록 지정합니다.

/QIPF_fr32

설명

참고

/QIPF_fr32는 Itanium을 대상으로 한 컴파일러에서만 사용할 수 있습니다. x64 또는 x86을 대상으로 한 컴파일러에서는 이 컴파일러 옵션을 사용할 수 없습니다.

커널 모드 컨텍스트에서 실행되는 장치 드라이버를 작성할 때는 /QIPF_fr32를 사용하여 컴파일하는 것이 좋습니다. 응용 프로그램을 커널 모드에서 전환할 때 상위 96 레지스터가 하나라도 변경되면 응용 프로그램을 다시 사용자 모드로 전환할 때 문제가 발생합니다. 작업이 중단되는 경우를 예로 들 수 있습니다. 다음과 같은 시나리오를 생각해 볼 수 있습니다.

  • 응용 프로그램을 사용자 모드에서 실행하는 동안 중단이 발생합니다.

  • 커널에 컨트롤이 전달되고 상위 96 부동 소수점 레지스터가 저장되지 않습니다.

  • /QIPF_fr32를 사용하지 않고 컴파일한 드라이버를 커널에서 호출합니다.

  • 상위 부동 소수점 레지스터 중 하나가 드라이버에서 소멸됩니다.

  • 드라이버가 커널 모드로 되돌아갑니다.

  • 커널이 다시 실행되고 응용 프로그램의 상위 부동 소수점 레지스터 중 하나가 소멸됩니다.

/QIPF_fr32를 사용하면 커널 모드에서 사용자 모드로 전환되는 응용 프로그램에 정확성이 부여될 뿐만 아니라 사용자 모드에서의 컨텍스트 변경 성능도 향상됩니다. 즉, 상위 96 부동 소수점 레지스터를 저장하거나 다시 로드할 필요가 없습니다.

Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면

  • Visual Studio 개발 환경에서는 /QIPF_fr32를 사용할 수 없습니다.

프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면

참고 항목

참조

/Q 옵션(하위 수준 작업)

컴파일러 옵션

컴파일러 옵션 설정