정보: Windows 부동 소수점 계산을 처리하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 102555 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

이 페이지에서

요약

모든 Microsoft Windows 플랫폼 Win32 응용 프로그램을 공통 부동 소수점 환경을 제공하지만 장치 드라이버 지원 및 Win16, 휴대용 운영 체제 인터페이스 (POSIX), MS-DOS, 및 OS/2 기반 응용 프로그램에 대한 지원을 다릅니다.

이 문서에서는 이러한 플랫폼의 각 부동 소수점 지원 응용 프로그램 및 장치 드라이버를 제공하는 방법에 대해 설명합니다.

추가 정보

이 단원에서는 먼저 Windows NT와 Windows 2000 해당 후속 부동 소수점 기능을 설명하고 Windows 95, Windows 98, Windows 98 Second Edition 및 Windows Millennium 유발하여 기반 시스템은 동일한 설명합니다. 각 그룹의 구성원이 서로 비슷한 부동 소수점 지원을 제공하지만 내부 아키텍처 차이 때문에 두 그룹이 서로 다릅니다.

Windows NT 및 그 후속 작업

Win32 응용 프로그램

각 스레드가 Win32 응용 프로그램에서 일반 용도의 레지스터 및 부동 소수점 레지스터가 들어 자체 실행 상태가 있습니다. 따라서 부동 소수점 실행 및 예외 처리 스레드 단위 기준으로 제어됩니다. 이 개별 스레드를 프로세스에서 특수화된 반올림 또는 정밀도 제어 및 예외 처리를 사용하여 부동 소수점 프로세서 동작을 조정할 수 있습니다.

Win32 구조적 예외 처리 (SEH) 메커니즘을 Win32 커널에 내장된 부동 소수점 예외는 처리됩니다. 부동 소수점 예외 스레드가 인해 경우 SEH 메커니즘을 스레드에서 예외를 처리하도록 등록된 예외 처리기를 찾습니다. 소유하는 프로세스의 스레드가 예외를 처리할 경우 닫힙니다.

Windows NT 및 그 후속 전체 부동 소수점 프로세서에서 부동 소수점 기본 제공 지원이 없는 경우에도 Intel x 86 Win32 응용 프로그램을 지원합니다. 에뮬레이션 부동 소수점 하드웨어가 설치되어 있지 않은 컴퓨터에 의해 Win32 커널이 제공됩니다. 따라서 컴파일러에서는 자체 부동 소수점 에뮬레이션을 제공할 필요가 없습니다.

언어의 런타임 라이브러리를 또는 부동 소수점 예외 처리기를 기본 제공하는 런타임 시스템에 있을 수 있습니다. 예를 들어, Microsoft Visual C++ 런타임 라이브러리 기본 부동 소수점 예외 처리를 제공하고 _controlfp 결정 및 부동 소수점 하드웨어를 반올림, 정밀도 제어 및 예외 처리 동작을 조정하는 등의 기능이 포함됩니다.

Win16 응용 프로그램

Win16 응용 프로그램은 일반적으로 부동 소수점 지침과 WIN87EM 16비트 부동 소수점 에뮬레이터 호출을 들어 픽스업 레코드를 개체 코드로 컴파일됩니다. 컴퓨터의 프로세서 부동 소수점 지침을 지원하면 또는 연산 보조 프로세서가 있는 경우 로더가 부동 소수점 지침에 있는 픽스업의 확인하고 지시가 실행됩니다. 부동 소수점 하드웨어가 검색되지 않으면 로더가 WIN87EM, 호출이 있는 픽스업의 확인하고 에뮬레이터에서 실행됩니다.

WIN87EM 응용 프로그램을 실행할 부동 소수점 지침을 가로챌; 경우에만 명시적으로 호출될 때 실행됩니다. 따라서 Win16 응용 프로그램을 실행 파일에 픽스업 레코드를 넣을 링커 알려 에뮬레이션 지원하도록 컴파일되는 확인하십시오.

Windows NT Intel x 86 프로세서 에뮬레이터 코드를 RISC 기반 컴퓨터에 Windows NT Win16 응용 프로그램을 실행할 수 있습니다. Windows NT 3.51 및 Windows NT 3.5 80286 및 80287 에뮬레이터를 포함할 Windows NT 4.0 i486 에뮬레이터가 포함됩니다. Win16 응용 프로그램을 Intel 부동 소수점 coprocessors 있는 경우 항상 실행됩니다. 따라서 WIN87EM RISC 컴퓨터에서 부동 소수점 에뮬레이션을 제공하지 않습니다.

장치 드라이버

Windows 2000 및 그 후속 커널 모드 드라이버를 IRQL DISPATCH_LEVEL, 작거나 수 없지만 호출자의 부동 소수점 컨텍스트가 변경되지 않도록 명시적으로 프로세서의 부동 소수점 상태를 유지해야 합니다 부동 소수점 지침을 사용할 수 있습니다. 드라이버 KeSaveFloatingPointState 부동 소수점 연산을 수행하기 전에 호출해야 함수와 KeRestoreFloatingPointState 호출자에게 반환하기 전에 호출해야 합니다. 이러한 함수는 사용하여 Windows 2000 드라이버 개발 키트 (DDK은 있는) 설명되어 있습니다.

부동 소수점 레지스터는 커널 모드 스택 스위치 유지하지 않는 때문에 Windows NT 3.51 및 Windows 4.0 커널 모드 드라이버를 부동 소수점 지침을 사용할 수 없습니다. 부동 소수점 명령, 커널 모드 드라이버 를 않습니다 사용할 경우 사용자 모드 응용 프로그램의 숫자 상태의 손상 또는 시스템 실패 (충돌) 발생할 수 있습니다.

MS-DOS 응용 프로그램

Windows NT 및 그 후속 Intel x 86 MS-DOS 응용 프로그램을 Intel x 86 프로세서의 가상 8086 모드에서 실행합니다. MS-DOS 마찬가지로 부동 소수점 하드웨어를 MS-DOS 응용 프로그램에 액세스할 수 있습니다. 부동 소수점 하드웨어가 있는 경우 응용 프로그램에 대해 없음 에뮬레이션이 제공됩니다. 따라서 응용 프로그램이 자체 에뮬레이션을 제공해야 합니다.

RISC 기반 컴퓨터에 Windows NT 기본 제공 Intel x 86 에뮬레이션 코드를 사용합니다. Windows NT 3.51 및 Windows NT 3.5 80286 및 80287 에뮬레이터를 포함할 Windows NT 4.0 i486 에뮬레이터가 포함됩니다. Intel 부동 소수점 coprocessors 있는 경우 MS-DOS 응용 프로그램은 항상 실행됩니다.

POSIX 응용 프로그램

Win32 응용 프로그램에서 POSIX 응용 프로그램의 전체 부동 소수점 지원이 항상 가정할 수 있습니다.

표준 POSIX 부동 소수점 예외 해제 방법을 정의하지 않습니다. 따라서 부동 소수점 예외를 사용하는 POSIX 응용 프로그램을 시스템 관련 기능에 대한 의존해야 합니다. Microsoft Visual C++로 컴파일된 POSIX 응용 프로그램 _controlfp 함수를 사용하여 부동 예외에 대해 해제할 수 있습니다. 부동 소수점 예외 SIGFPE에 의해 발견되었습니다 또는 응용 프로그램 이외의 수행해야 하는 경우 fpieee_flt 함수에서 예외를 catch.

OS/2 응용 프로그램

이 하위 시스템 부동 소수점 지원이 OS/2 일치하는: 부동 소수점 하드웨어가 설치된 경우 OS/2 응용 프로그램 자체 에뮬레이션 제공해야 합니다. OS/2 하위 시스템이 경우에만 Intel x 86 버전 Windows NT 및 그 후속이 지원됩니다.

Windows 95, Windows 98, Windows 98 Second Edition 및 Windows Me

Win32 응용 프로그램

Windows Me 플랫폼을 통해 Windows 95 같이 Windows NT 및 Windows 2000 플랫폼에 Win32 응용 프로그램에 대해 같은 부동 소수점 지원을 제공합니다.

Win16 응용 프로그램

Win16 응용 프로그램은 일반적으로 부동 소수점 지침과 WIN87EM 16비트 부동 소수점 에뮬레이터 호출이 들어 있는 개체 코드에서 픽스업 레코드를 포함하려면 컴파일됩니다. 컴퓨터의 프로세서 부동 소수점 지침을 지원하면 또는 연산 보조 프로세서가 있는 경우, 로더는 부동 소수점 지침에 있는 픽스업의 확인하고 실행되지 않습니다. 부동 소수점 하드웨어가 검색되지 않으면 로더가 WIN87EM, 호출이 있는 픽스업의 확인하고 에뮬레이터에서 실행됩니다.

WIN87EM 응용 프로그램을 실행할 부동 소수점 지침을 가로챌; 경우에만 명시적으로 호출될 때 실행됩니다. 따라서 실행 파일에 픽스업 레코드를 넣을 링커 알려 에뮬레이션 지원하도록 Win16 응용 프로그램을 컴파일하십시오.

장치 드라이버

가상 장치 드라이버 (VxDs) 부동 소수점 지침을 사용할 수 있지만 가상 수치 연산 보조 프로세서 장치 인터페이스 저장 및 부동 소수점 연산 보조 프로세서가 상태를 복원하는 방법을 사용해야 합니다. VxD 가 또한 부동 소수점 예외는 예외 처리기를 등록해야 합니다.

MS-DOS 응용 프로그램

Windows Me 플랫폼을 통해 Windows 95 MS-DOS 응용 프로그램을 Intel x 86 프로세서의 가상 8086 모드에서 실행합니다. MS-DOS 마찬가지로 부동 소수점 하드웨어를 MS-DOS 응용 프로그램에 액세스할 수 있습니다. 부동 소수점 하드웨어가 있는 경우 응용 프로그램에 대해 없음 에뮬레이션이 제공됩니다. 따라서 응용 프로그램이 일반적으로 MS-DOS 응용 프로그램의 런타임 라이브러리에 의해 수행되는 것처럼 자체 에뮬레이션을 제공해야 합니다.

이 문서에서 설명하는 타사 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft 는 이러한 제품의 성능 및 신뢰성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.

속성

기술 자료: 102555 - 마지막 검토: 2014년 2월 27일 목요일 - 수정: 2.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Win32 Application Programming Interface?을(를) 다음과 함께 사용했을 때
    • Microsoft Windows 95
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows Millennium Edition
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
키워드:?
kbnosurvey kbarchive kbmt kbfloatpoint kbinfo kbkernbase kbprogramming KB102555 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com