다음을 통해 공유


Arm64X PE 파일

Arm64X는 클래식 Arm64 코드와 Arm64EC 코드를 함께 포함할 수 있는 새로운 유형의 이진법입니다. 따라서 Arm64x는 Windows on Arm 디바이스의 클래식 Arm64 및 Arm64EC 프로세스 모두에 호환되며 두 API에서 사용할 수 있는 미들웨어 또는 플러그인에 특히 적합합니다.

Windows 11 SDK에 도입된 Arm64X 이진 파일은 Arm의 Windows 11과 Arm의 Windows 10 모두에서 작동하는 PE(이식 가능 실행 파일) 파일 형식입니다. Arm64X 이진 파일을 빌드하려면 Arm64X 이진 파일 빌드를 참조하세요.

Arm64X 이진 파일은 어떻게 작동합니까?

기본적으로 Arm64X 이진 파일은 별도의 x64/Arm64EC 및 Arm64 이진 파일에 있지만 디스크의 더 효율적인 파일에 병합되는 모든 콘텐츠가 포함됩니다. 빌드된 Arm64X 이진 파일은 디스크 공간을 절약하기 위해 중복 파트를 제거하며, 두 개의 코드 집합, 진입점 등이 있습니다.

애플리케이션에서 Arm64X 이진 파일을 로드하는 경우 운영 체제는 로드되는 프로세스의 아키텍처에 따라 올바른 섹션을 노출하도록 변환을 적용합니다. 3D 안경의 빨간색 또는 파란색 렌즈를 통해 볼 수 있는 빨간색과 파란색 이미지를 모두 사용하여 이전 3D 이미지와 같은 Arm64X 이진 파일을 생각할 수 있습니다. x64 앱은 x64 DLL인 것처럼 DLL을 표시하고 Arm64 앱은 Arm64 DLL과 동일한 DLL을 볼 수 있습니다.

빨간색 및 파란색 렌즈가 있는 3D 안경을 보여주는 Arm64X 변환 그래픽

투명한 운영 체제 변환을 통해 x64 및 Arm64 애플리케이션 모두 다른 아키텍처에 해당하는 코드가 포함되어 있다는 사실을 알지 못하고 동일한 Arm64X 이진 파일을 로드할 수 있습니다. 이러한 이유로 Arm64X 이진 파일은 주변 환경의 '색상'을 취하기 때문에 '카멜레온'이라는 별명을 가지고 있습니다.

기본적으로 Arm64X 이진 파일은 Arm64 이진 파일로 표시됩니다. 이렇게 하면 Arm64X 형식이나 변환을 적용하는 방법을 모르는 Arm에서 Windows 10을 실행하는 시스템에서 Arm64X 이진 파일을 Arm64 프로세스에 성공적으로 로드할 수 있습니다.

운영 체제는 Arm64X 이진 파일을 어떻게 사용하나요?

Arm의 Windows 11에는 Arm64에서 x64 애플리케이션을 실행하는 기능이 도입되었습니다. 그러나 SysWoW64폴더를 포함하는 x86 에뮬레이션과 달리 순수 x64 운영 체제 이진 파일의 별도 폴더는 없습니다. Windows 11 on Arm을 사용하면 x64 애플리케이션과 Arm64 애플리케이션 모두 System32의 이진 파일을 로드하고 이진 파일을 사용하여 API를 호출할 수 있습니다. 앱에서 로드해야 할 수 있는 System32의 모든 이진 파일이 Arm64X 이진 파일로 다시 컴파일되었기 때문에 이러한 유연성이 가능합니다.

x64 및 Arm64 애플리케이션은 모두 x86용 SysWoW64와(과) 같은 System32 모든 시스템 이진 파일 별도 복사본 없이도 이진 파일로 로드하고 상호 작용할 수 있습니다.

System32 폴더의 x64 및 Arm64 호환 이진 파일

미들웨어 또는 플러그인과 함께 사용할 Arm64X

Arm64X 이진 파일의 핵심 함수는 디스크에서 하나의 파일을 사용하도록 설정하여 x64/Arm64EC 및 Arm64 프로세스를 모두 지원하는 것입니다. 대부분의 앱 개발자는 둘 다 아닌 Arm64EC 또는 Arm64로 애플리케이션을 빌드하는 데 집중합니다. 이 경우 Arm64X는 필요하지 않을 수 있습니다.

그러나 이러한 코드는 x64 또는 Arm64 프로세스에 로드될 가능성이 있으므로 미들웨어 또는 플러그인 개발자는 Arm64X를 고려해야 합니다.

Arm64X를 사용하지 않고 x64 및 Arm64 프로세스를 모두 지원할 수 있지만 운영 체제에서 지정된 64비트 프로세스에 이진 파일의 올바른 아키텍처 로드를 처리하는 것이 더 쉬울 수 있습니다.

x64/Arm64EC와 Arm64 이진 파일을 결합한 앱 별도 이진 파일, Arm64x 이진 파일, Arm64X 순수 전달자를 지원하는 세 가지 방법

Arm의 Windows 11에서 두 아키텍처를 모두 지원하는 세 가지 개념적 방법은 다음과 같습니다.

  • 별도의 이진 파일: 오늘날 표준 사례에서는 여러 아키텍처를 지원할 때 별도의 이진 파일을 사용하므로 별도의 x64 및 Arm64 이진 파일을 빌드하고 배송하는 것이 솔루션에 더 적합할 수 있습니다. 기존 메커니즘을 사용하여 올바른 이진 파일이 연결된 아키텍처 프로세스에 로드되도록 할 수 있습니다.

  • Arm64X 이진 파일: 모든 x64/Arm64EC 및 Arm64 코드를 하나의 이진 파일로 포함하는 Arm64X 이진 파일을 빌드할 수 있습니다.

  • Arm64X 순수 전달자: Arm64X의 유연성이 필요하지만 모든 앱 코드를 Arm64X 이진 파일에 넣지 않으려면 코드가 없는 작은 Arm64X 이진 파일을 사용하여 로더를 DLL의 올바른 아키텍처로 리디렉션하는 순수 전달자 접근 방식을 사용하도록 선택할 수 있습니다.

Arm64X가 필요한 예제 상황

x64 및 Arm64 앱을 모두 지원하려면 Arm64X 이진 파일을 사용해야 하는 몇 가지 상황이 있습니다. 다음을 포함합니다.

  • x64 또는 Arm64 앱 모두에서 호출할 수 있는 64비트 COM 서버
  • x64 또는 Arm64 앱에 로드할 수 있는 플러그인
  • x64 또는 Arm64 프로세스에 삽입되는 단일 이진 파일

이러한 각 경우에서 Arm64X 이진 파일 또는 Arm64X 순수 전달자를 사용하여 하나의 이진 파일을 사용하여 두 아키텍처를 모두 지원할 수 있습니다.

Arm64X 이진 파일 빌드에 대한 자세한 내용은 빌드 Arm64X 이진 파일을 참조하세요.