Подтвердить что ты не робот

Могу ли я с уверенностью предположить, что установки Windows всегда будут малоподвижными?

Я пишу драйвер файловой системы userpace в Windows, и конверсии endianness - это то, с чем я столкнулся, поскольку эта конкретная файловая система всегда хранит значения в формате little-endian, и ожидается, что драйвер их конвертирует (при необходимости) для на котором он работает. Тем не менее, я задаюсь вопросом, нужно ли мне даже беспокоиться о конверсиях endianness, поскольку, насколько я могу судить, настольные Windows поддерживают только мини-архитектуры (IA32, x86-84 и т.д.), И поэтому на диске мало-дневные значения отлично подходят для преобразования. Является ли это наблюдение точным, и если да, то вообще приемлемо ли предположить, что Windows всегда будет работать на малоэтажном оборудовании? Кроме того, возможно ли вообще (в 2011 году) запустить Windows на эмуляторе большого типа или что-то в этом роде, чтобы можно было даже проверить проблемы с контентом?

Изменить: Для дополнительной ясности, как мой код работает в настоящий момент, я проверяю проверку подлинности во время запуска, а затем каждый раз, когда я загружаю значение с диска, я запускаю его через встроенный функция, использующая внутреннее значение, чтобы изменить endianness, если архитектура является big-endian. Проблема в том, что я не знаю, мог ли я пропустить один или несколько из тех мест, где мне нужно было сделать конверсию, и самый простой способ проверить, не запутался ли я в том, чтобы запустить программу по архитектуре большого конца. Поэтому мне интересно знать (a), если это необходимо для выполнения этих проверок, поскольку Windows обычно не запускается на платформах с маленькими терминами (сегодня все равно) и (b), как я мог бы проверить свой код, поскольку, поскольку я не могу придумать способ запуска Windows в архитектуре большого конца и ручное изменение все, многобайтовые значения на диске по-прежнему связаны с ручной процесс, который я вполне мог бы испортить.

4b9b3361

Ответ 1

Все версии Windows, которые вы увидите, малодушны, да. Ядро NT фактически работает на архитектуре большого размера даже сегодня.

Ответ 2

Изменить после измененного вопроса:

A) Нет необходимости проверять соответствие, если ваша единственная цель - Windows x86 или x64. В этом случае я даже не потратил бы время на проверку достоверности.

B) Если вы хотите проверить поддержку вашего кода в двоичном формате, я рекомендую разделить его на библиотеки, которые сами по себе могут быть скомпилированы. Затем скомпилируйте и запустите код в вашем любимом Linux-стиле, который поддерживает big-endian, и посмотрите, работает ли он. Я еще не слышал ни о компиляторе, ни о программном обеспечении, которое может обнаруживать проблемы, связанные с би-контентом.

Оригинальный ответ:

Насколько я знаю, нет оконных или настольных версий Windows, поддерживающих big-endian. Процессоры Itanium (которые, как я считаю, всегда назывались IA 64, а не IA32, но я мог ошибаться) имеют возможность запускать в режиме big-endian, но Windows не поддерживает его.

Это не означает, что Windows 8 будет малозначительной только тогда, когда Windows 8 нацеливается на ARM-процессоры.

Если по какой-то причине вы находитесь в Windows (#ifdef _WIN32) и big-endian просто меняете структуры данных при загрузке с диска и всегда сохраняете в малочисленном формате, что гораздо более распространено.