little Windows 설치가 항상 리틀 엔디안이라고 가정 할 수 있습니까?




memcpy little endian big endian (2)

당신이 볼 수있는 모든 Windows 버전은 리틀 엔디안입니다. NT 커널은 실제로 오늘날에도 빅 엔디안 아키텍처에서 실행됩니다.

나는 윈도우즈에서 userspace 파일 시스템 드라이버를 쓰고 있으며 엔디 언 변환은 내가 다루었던 것들이다.이 특정 파일 시스템은 항상 리틀 엔디 언 형식으로 값을 저장하고 드라이버는 (필요하다면) CPU를 변환 할 것으로 예상된다. 계속 달리고있어. 그러나 내가 말할 수있는 한 데스크톱 Windows는 리틀 엔디안 아키텍처 (IA32, x86-84 등) 만 지원하므로 엔디안 변환에 대해 걱정할 필요가 있는지 궁금해합니다. 따라서 디스크 상에 리틀 엔디안 값은 완벽하게 괜찮습니다. 이 관찰은 정확합니까? 그렇다면 일반적으로 Windows가 항상 리틀 엔디 언 하드웨어에서 실행될 것이라는 가정을하는 것이 허용됩니까? 또한 (2011 년에) 빅 엔디안 에뮬레이터 등에서 Windows를 실행하여 엔디안 문제를 테스트 할 수도 있습니다.

편집 : 추가 명확성, 내 코드가 현재 작동하는 방식, 시작시 endianness 검사를 수행 한 다음 디스크에서 값을로드 할 때마다 내재적 인 엔디 언 스를 사용하여 인라인 함수를 통해 실행합니다. 아키텍처는 빅 엔디안입니다. 문제는, 내가 전환을해야하는 장소 중 하나 이상을 놓친 것일 수도 있는지, 그리고 내가 망쳤다는 것을 알아내는 가장 쉬운 방법은 빅 엔디안 아키텍처에서 프로그램을 실행하는 것입니다. 그래서 저는 (a) Windows가 일반적으로 리틀 엔디안 플랫폼 (오늘날의 어쨌든)에서 실행되지 않기 때문에 이러한 점검을해야하는지조차 알고 싶습니다. (b) 코드를 테스트 할 수있는 방법은 무엇입니까? 빅 엔디안 아키텍처에서 Windows를 실행하는 방법을 생각할 수 없으며 디스크의 모든 멀티 바이트 값을 수동으로 되돌리려면 여전히 수동 프로세스가 필요합니다.


변경된 질문 이후 수정 :

A) 유일한 대상이 Windows x86 또는 x64 인 경우 엔디 언 심스를 확인할 필요가 없습니다. 저도 엔디안을 점검하는 데 시간을 할애하지 않습니다.

B) 코드의 양 엔디안 지원을 확인하려면 크로스 플랫폼 컴파일러 인 라이브러리로 분할하는 것이 좋습니다. 그런 다음 빅 엔디안을 지원하고 좋아하는 리눅스 맛에 코드를 컴파일하고 실행하십시오. 나는 아직 바이 엔디안 문제를 감지 할 수있는 컴파일러 나 소프트웨어에 대해서는 들어 보지 못했다.

원래 응답 :

내가 아는 한, 빅 엔디안을 지원하는 데스크탑 또는 서버 버전의 Windows는 없습니다. Itanium 프로세서 (IA32가 아니라 IA64라고 항상 부름 받았지만 잘못 될 수 있다고 생각합니다)는 빅 엔디안에서 실행할 수 있지만 Windows에서는 지원하지 않습니다.

이것은 Windows 8이 ARM 프로세서를 목표로하는 경우에만 Windows 8이 리틀 엔디안이라고 말할 수는 없습니다.

어떤 이유로 Windows (#ifdef _WIN32) 및 빅 엔디안이 디스크에서로드 할 때 단순히 데이터 구조를 역전시키고 훨씬 더 보편적 인 little-endian 형식으로 저장하면됩니다.





endianness