Режим экрана 32 бит как сделать 64 бит
В статье рассмотрены основные шаги, обеспечивающие корректный перенос 32-битных Windows приложений на 64-битные Windows системы. Хотя статья ориентирована на разработчиков, использующих язык Си/Си++ в среде Visual Studio 2005/2008, она будет полезна и другим разработчикам, планирующим перенос своих приложений под 64-битные системы.
Введение
В статье описаны основные моменты, с которыми сталкиваются разработчики, планирующие мигрировать 32-битные программы на 64-битные системы. Конечно, список рассмотренных вопросов не полон, но хочется надеяться, что со временем будет предложен расширенный вариант этой статьи. Автор будет благодарен отзывам, комментариям и вопросам, которые позволят улучшить информативность этой статьи.
1. Шаг первый. 64-битность бывает разной.
Давайте разберемся
Используемая модель данных накладывает отпечаток на процесс разработки 64-битных приложений, так как в коде программ необходимо учитывать разрядность используемых данных [5].
2. Шаг второй. Выясните, нужен ли вам 64-битный вариант вашего продукта
2.1. Продолжительность жизненного цикла приложений
Не следует создавать 64-битную версию приложения с коротким жизненным циклом. Благодаря подсистеме WOW64 старые 32-битные приложения достаточно хорошо работают на 64-битных Windows системах и поэтому делать программу 64-битной, которая через 2 года перестанет поддерживаться, смысла не имеет [6]. Более того, практика показала, что переход на 64-битные версии Windows затянулся и возможно большинство ваших пользователей в краткосрочной перспективе будут использовать только 32-битный вариант вашего программного решения.
Если планируется длительное развитие и длительная поддержка программного продукта, то следует начинать работать над 64-битным вариантом вашего решения. Это можно делать неспешно, но учтите, что чем дольше у вас не будет полноценного 64-битного варианта, тем больше сложностей может возникать с поддержкой такого приложения, устанавливаемого на 64-битные версии Windows.
2.2. Ресурсоемкость приложения
2.3. Разработка библиотек
Если вы разрабатываете библиотеки, компоненты или иные элементы, с помощью которых сторонние разработчики создают свое программное обеспечение, то вы должны проявить оперативность в создании 64-битного варианта своей продукции. В противном случае, ваши клиенты, заинтересованные в выпуске 64-битных версий, будут вынуждены искать альтернативные решения. Например, некоторые разработчики программно-аппаратной защиты откликнулись с большой задержкой на появление 64-битных программ, что заставило ряд клиентов искать другие инструменты для защиты своих программ.
Дополнительным преимуществом от выпуска 64-битной версии библиотеки является то, что вы можете продавать ее как отдельный продукт. Таким образом, ваши клиенты, желающие создавать как 32-битные, так и 64-битные приложения будут вынуждены приобретать 2 различные лицензии. Например, такая политика используется компанией Spatial Corporation при продаже библиотеки Spatial ACIS.
2.4. Зависимость вашего продукта от сторонних библиотек
Прежде чем планировать работу над созданием 64-битной версий вашего продукта выясните, имеются ли 64-битные варианты библиотек и компонентов, которые в нем используются. Также узнайте, какова ценовая политика по отношению к 64-битному варианту библиотеки. Все это можно выяснить, посетив сайт разработчика библиотеки. Если поддержка отсутствует, то заранее поищите альтернативные решения, поддерживающие 64-битные системы.
2.5. Наличие 16-битных приложений
Если в ваших решениях все еще присутствуют 16-битные модули, то пора от них избавиться. Работа 16-битных приложений в 64-битных версиях Windows не поддерживается.
Здесь следует пояснить один момент, связанный с использованием 16-битных инсталляторов. Они до сих пор используются для установки некоторых 32-битных приложений. Создан специальный механизм, который на лету подменяет ряд наиболее популярных 16-битных инсталляторов на более новые версии. Это может вызвать неверное мнение, что 16-битные программы по-прежнему работают в 64-битной среде. Помните, это не так.
2.6. Наличие кода на ассемблере
Не забывайте, что использование большого объема кода на ассемблере, может существенно повысить стоимость создания 64-битной версии приложения.
Взвесив все перечисленные факты, все за и против, примите решение, следует ли вам переносить ваш проект на 64-битные системы. И если это так, то давайте пойдем дальше.
3. Шаг третий. Инструментарий
Если вы приняли решение о разработке 64-битной версии вашего продукта и готовы потратить на это время, это еще не гарантирует успех. Дело в том, что вы должны обладать всем необходимым инструментарием и здесь могут быть неприятные казусы.
Самой простой, но и самой непреодолимой, может стать проблема отсутствия 64-битного компилятора. Статья пишется в 2009 году, но все еще нет 64-битного компилятора C++ Builder от Codegear [7]. Его выпуск ожидается только к концу этого года. Невозможно обойти подобную проблему, если конечно но переписать весь проект, например, с использованием Visual Studio. Но если с отсутствием 64-битного компилятора все понятно, то другие аналогичные проблемы могут оказаться более скрытными и вылезти уже на этапе работ по переносу проекта на новую архитектуру. Поэтому, хочется посоветовать заранее провести исследование, существуют ли все необходимые компоненты, которые потребуются для реализации 64-битной версии вашего продукта. Вас могут поджидать неприятные сюрпризы.
Конечно, перечислить все, что может понадобиться для проекта здесь невозможно, но все-таки предложу список, который поможет вам соорентироваться и возможно вспомнить о других моментах, которые необходимы для реализации вашего 64-битного проекта:
3.1. Наличие 64-битного компилятора
Сложно что-то еще сказать о важности наличия 64-битного компилятора. Он просто должен быть.
Если вы планируете разрабатывать 64-битные приложения с использованием последней версии (на момент написания статьи) Visual Studio 2008, то следующая таблица N2 поможет помочь определить, какая из редакций Visual Studio вам необходима.
Таблица N2. Возможности различных редакций Visual Studio 2008
3.2. Наличие 64-битных компьютеров под управлением 64-битных операционных систем
Можно конечно использовать виртуальные машины для запуска 64-битных приложений на 32-битной технике, но это крайне неудобно и не обеспечит необходимого уровня тестовых испытаний. Желательно, чтобы в машинах было установлено не менее 4-8 гигабайт оперативной памяти.
3.3. Наличие 64-битных вариантов всех используемых библиотек
Если библиотеки представлены в исходных кодах, то должна присутствовать 64-битная конфигурация проекта. Самостоятельно заниматься модернизацией библиотеки для ее сборки под 64-битную систему может быть неблагодарным и сложным занятием, а результат может оказаться ненадежным и содержащим ошибки. Также вы можете нарушить этим лицензионные соглашения. Если вы используете библиотеки в виде бинарных модулей, то вы также должны узнать, существуют ли 64-битные модули. Вы не сможете использовать 32-битные DLL внутри 64-битного приложения. Можно создать специальную обвязку через COM, но эта будет отдельной большой, сложной задачей [8]. Также учтите, что приобретение 64-битной версии библиотеки может стоить дополнительных денег.
3.4. Отсутствие встроенного кода на ассемблере
Visual C++ не поддерживает 64-битный встроенный ассемблер. Вы должны использовать или внешний 64-битный ассемблер (например, MASM) или иметь реализацию той же функциональности на языке Си/Си++ [9].
3.5. Модернизация методологии тестирования
Существенная переработка методологии тестирования, модернизация юнит-тестов, использование новых инструментальных средств. Более подробно об этом будет сказано ниже, но не забывайте учесть это на этапе оценки временных затрат на миграцию приложения на новую систему [10].
3.6. Новые данные для тестирования
Если вы разрабатываете ресурсоемкие приложения, потребляющие большой объем оперативной памяти, то вам необходимо позаботиться о пополнении базы тестовых входных данных. При нагрузочном тестировании 64-битных приложений желательно выходить за пределы 4 гигабайт потребляемой памяти. Многие ошибки могут проявиться только при таких условиях.
3.7. Наличие 64-битных систем защиты
Используемая система защиты, должна поддерживать 64-битные системы в полном необходимом вам объеме. Например, компания Aladdin достаточно быстро выпустила 64-битные драйвера для поддержки аппаратных ключей Hasp. Но очень долго отсутсвовала система автоматической защиты 64-битных бинарных файлов (программа Hasp Envelop). Таким образом, механизм защиты приходилось реализовывать самостоятельно внутри программного кода, что являлось дополнительной сложной задачей, требующей квалификации и времени. Не забывайте про подобные моменты, связанные с обеспечением защиты, системой обновлений и так далее.
3.8. Инсталлятор
4. Шаг четвертый. Настройка проекта в Visual Studio 2005/2008
Создание 64-битной конфигурации проекта в Visual Studio 2005/2008 выглядит достаточно просто. Сложности будут подстерегать вас на этапе сборки новой конфигурации и поиска в ней ошибок. Для создания же 64-битной конфигурации достаточно выполнить следующие 4 шага:
Запускаем менеджер конфигураций, как показано на рисунке N1:
Рисунок 1. Запуск менеджера конфигураций
В менеджере конфигураций выбираем поддержку новой платформе (рисунок N2):
Рисунок 2. Создание новой конфигурации
Выбираем 64-битную платформу (x64), а в качестве основы выбираем настройки от 32-битной версии (рисунок N3). Те настройки, которые влияют на режим сборки среда Visual Studio скорректирует сама.
Рисунок 3. Выбираем x64 в качестве платформы и берем за основу конфигурацию Win32
Добавление новой конфигурации завершено, и мы можем выбрать 64-битный вариант конфигурации и приступить к компиляции 64-битного приложения. Выбор 64-битной конфигурации для сборки показан на рисунке N4.
Рисунок 4. Теперь доступна 32-битная и 64-битная конфигурация
Если вам повезет, то дополнительно заниматься настройкой 64-битного проекта необходимости не будет. Но это сильно зависит от проекта, его сложности и количества используемых библиотек. Единственное, что стоит сразу изменить, это размер стека. В случае если в вашем проекте используется стек размером по умолчанию, то есть в 1 мегабайт, то есть смысл задать его размером в 2 мегабайта для 64-битной версии. Это не обязательно, но лучше заранее подстраховаться. Если у вас используется размер стека, отличный от размера по умолчанию, то есть смысл сделать его для 64-битной версии в 2 раза больше. Для этого в настройках проекта найдите и измените параметры Stack Reserve Size и Stack Commit Size.
5. Шаг пятый. Компиляция приложения
6. Диагностика скрытых ошибок
Если вы думаете, что после исправления всех ошибок компиляции будет получено долгожданное 64-битное приложение, то придется вас разочаровать. Самое сложное впереди. На этапе компиляции вами будут исправлены самые явные ошибки, которые смог обнаружить компилятор, которые в основном связаны с невозможностью неявного приведения типов. Но это верхушка айсберга. Основная часть ошибок скрыта. Эти ошибки с точки зрения абстрактного языка Си++ смотрятся безопасно или замаскированы явными приведениями типов. Таких ошибок в несколько раз больше, чем количество ошибок выявленных на этапе компиляции.
На ключ /Wp64 надежды возлагать не следует. Это ключ часто преподносится как чудесное средство поиска 64-битных ошибок. В действительности ключ /Wp64 всего лишь дает возможность при компиляции 32-битного кода получить некоторые предупреждения, что в 64-битном режиме определенные участки кода будут некорректны. При компиляции 64-битного кода эти предупреждения будут выданы компилятором в любом случае. И поэтому при компиляции 64-битного приложения ключ /Wp64 игнорируется. И уж тем более этот ключ не поможет в поиске скрытых ошибок [11].
Рассмотрим несколько примеров скрытых ошибок.
6.1. Явное приведение типов
Самый простой, но вовсе не самый легкий для обнаружения класс ошибок связан с явным приведением типов, при которых происходит обрезание значащих бит.
Распространенным пример — приведение указателей к 32-битным типам при передачи их в функции, такие как SendMessage:
|
Здесь явное приведение типа используется для превращения указателя в числовой тип. Для 32-битной архитектуры приведенный пример корректен, так как последний параметр функции SendMessage имеет тип LPARAM, который на 32-битной архитектуре совпадает с DWORD. Для 64-битной архитектуре использование DWORD ошибочно и должно быть заменено на LPARAM. Тип LPARAM имеет в зависимости от архитектуры размер 32 или 64 бита.
Это простой случай, но часто приведение типа выглядит более изысканно и обнаружить его используя предупреждения компилятора или поиском по тексту программы невозможно. Явные приведения типов подавляют диагностику компилятора, поскольку они именно и предназначены, чтобы сказать компилятору что приведение типов корректно и программист взял на себя ответственность за безопасность кода. Явный поиск тоже не поможет. Типы могут быть не стандартные имена (заданные программистом через typedef), а способов осуществить явное приведение типов тоже не мало. Для надежной диагностики подобных ошибок необходимо использовать только специальный инструментарий, такой как анализаторы Viva64 или PC-Lint.
6.2. Неявное приведение типов
Следующий пример связан уже с неявным приведением типа, при котором также происходит потеря значащих бит. Код функции fread осуществляет чтение из файла, но некорректен при попытке чтения более 2 гигабайт данных на 64-битной системе.
|
6.3. Работа с битами, сдвиги
Легко сделать ошибку в коде работящем с отдельными битами. Следующий тип ошибки связан с операциями сдвига. Рассмотрим пример:
|
Заметим также, что неисправленный код приведет еще к одной интересной ошибке. При выставлении 31 бита на 64-битной системе результатом работы функции будет значение 0xffffffff80000000 (см. рисунок 6). Результатом выражения 1
Разрешение экрана в Windows 7: что это такое и от чего зависит
Что такое разрешение экрана? Это параметр, от которого зависит четкость картинки на мониторе. Чем выше разрешение, тем мельче пиксели – цветные элементы (точки), из которых, как из мозаики, и состоит цифровое изображение.
При низком разрешении экрана пиксели укрупняются, а их общее число становится меньше, поэтому картинка выглядит зернистой и размытой. Если присмотреться – она вся состоит из мелких квадратиков, что особенно заметно на тонких линиях и контрастных цветовых переходах. Значки и окна при низком разрешении отображаются несоразмерно большими, их края часто уходят за границы экрана.
В минимальном разрешении (800×600) рабочий стол Windows 7 выглядит так:
При высоком разрешении количество пикселей увеличивается и, соответственно, уменьшается их размер, поэтому изображение выглядит натуралистичным и четким, зернистость отсутствует. В максимальном разрешении (1366×768) рабочий стол Windows 7 выглядит так:
Предельно допустимое разрешение зависит от технических свойств матрицы дисплея и возможностей видеокарты. Если вам приходилось собственноручно инсталлировать Windows 7, вы должны были приметить, что сразу после установки разрешение экрана минимальное – 800×600, и изменить его на большее нельзя, даже если у вас суперсовременная, мощная видеокарта. Это оттого, что система использует базовое видео, задача которого – обеспечить хоть какую-то видимость происходящего на компьютере. Чтобы “выжать” из железа максимум, необходимо установить соответствующие драйвера.
Как изменить разрешения экрана?
После установки видеодрайвера разрешение экрана автоматически устанавливается на оптимальное и для пользователя становится доступной его настройка. Установить одно из нескольких стандартных разрешений можно с помощью инструмента Windows 7 “Настройка разрешения экрана”.
- Зайдите в панель управления и из подпунктов категории “Оформление и персонализация” выберите “Настройка разрешения экрана”.
- Другой способ вызова этой настройки – пункт “Разрешение экрана” в контекстном меню рабочего стола.
- Кликом по одному из этих пунктов открывается окно “Настройки экрана”. Настройка разрешения доступна из одноименного элемента списка, рядом с которым находится выпадающее меню. Внутри меню – шкала с ползунком, двигая который можно изменять разрешение экрана от минимума до максимума. Данная настройка на разных компьютерах различается, и это, как уже говорилось, зависит от свойств матрицы дисплея и возможностей видеокарты.
- Установив желаемое значение, кликните кнопку “Применить”. После этого на разрешение изменится, а на экране отобразится окошко с предложением сохранить изменение. Если вас всё устраивает, нажмите кнопку подтверждения, если нет – не нажимайте ничего: через несколько секунд параметры дисплея вернутся к прежним.
Вот и вся настройка – разрешение экрана меняется немедленно, перезагружать компьютер для этого не нужно.
Настройка нестандартного разрешения экрана в Windows 7
Современные мониторы и дисплеи ноутбуков лучше всего отображают картинку, когда работают с разрешением, рекомендованным производителем. Но в перечне доступных разрешений Windows 7 нужного может не быть, то есть, системные средства вам не помогут. Для установки нестандартного разрешения понадобится сторонний софт. Это могут быть фирменные утилиты от производителей мониторов или программы для настройки видео. В качестве примера рассмотрим одну из таких программ – PowerStrip – утилиту для разгона и тонкой настройки видеокарт. В ней, в числе прочего, есть возможность изменять разрешение экрана в широких пределах.
- Скачайте PowerStrip по ссылке и установите на компьютер.
- Для настройки разрешения дисплея в главном окне PowerStrip, в разделе “Подключенный монитор”, щелкните кнопку “Изменить”.
- Для создания inf-файла, где будет храниться профиль настроек выбранного монитора, нажмите “Создать”.
- В окне “Информация о мониторе”, в разделе “Параметры вывода”, установите желаемое разрешение дисплея по вертикали и горизонтали, после чего для сохранения профиля нажмите кнопку со значком дискеты.
- Для применения установок нужно перезагрузить компьютер, кликнуть по значку PowerStrip в системном трее, выбрать из меню “Профили дисплея” и указать на сохраненный профиль.
- Щелкнув здесь же кнопку “Настройки”, можно попасть в раздел изменения параметров экрана. В этом окне можно установить другое разрешение и создать еще несколько профилей.
Устранение неполадок после изменения разрешения экрана
Иногда из-за установки неподдерживаемого разрешения дисплея после загрузки Windows 7 отображается лишь черный экран с курсором и больше ничего. В этом случае настройки нужно привести к стандартным. Делается это так:
- Перезагрузите ПК, нажав перед повторным стартом Windows клавишу F8.
- Из меню дополнительных вариантов запуска выберите “Безопасный режим”.
- После запуска системы зайдите в настройки разрешения экрана и установите одно из стандартных значений, предпочтительнее низкое (потом вы его поменяете).
После этого перезагрузитесь в нормальный режим, измените разрешение на оптимальное и проблема будет решена.
Если вы обновляетесь с 32-битной Windows 7 или 8 (8.1) до Windows 10, то в процессе устанавливается 32-бит версия системы. Также, некоторые устройства имеют предустановленную 32-разрядную систему, однако процессор поддерживает 64-бит Windows 10 и имеется возможность поменять ОС на неё (и иногда это может быть полезно, особенно если вы увеличили объем оперативной памяти на вашем компьютере или ноутбуке).
В этой инструкции о том, как поменять 32-битную Windows 10 на 64-битную. Если вы не знаете, как узнать разрядность вашей текущей системы, подробно об этом в статье Как узнать разрядность Windows 10 (как узнать сколько бит 32 или 64).
Установка Windows 10 x64 вместо 32-битной системы
К сожалению, без переустановки системы изменить 32-бит на 64-бит не получится: единственный путь поменять разрядность Windows 10 — выполнить чистую установку x64 версии системы в той же редакции на компьютер, ноутбук или планшет (при этом вы можете не удалять уже имеющиеся данные на устройстве, но драйверы и программы придется переустановить).
Примечание: если на диске есть несколько разделов (т.е. есть условный диск D), будет хорошим решением перенести свои пользовательские данные (в том числе с рабочего стола и системных папок документов) на него.
Порядок действий будет следующим:
На этом процесс перехода с 32-бит Windows 10 на 64-бит будет завершен. Т.е. основная задача — правильно пройти этапы с установкой системы с USB-накопителя и последующей установкой драйверов, чтобы получить ОС в нужной разрядности.
Разрядность операционной системы — это довольно важный аспект, который обязательно необходимо учитывать, ведь он существенным образом влияет на то, как на вашем компьютере будут работать те или иные игры и программы. Но что, если вам не подходит текущая разрядность Windows? Можно ли как-то поменять её? Ответ – нет, 32-битную систему превратить в 64-битную нельзя никаким способом, кроме переустановки. Это единственный вариант и именно о нём пойдёт речь дальше. Никаких скрытых настроек или обновлений, которые повысят разрядность Windows, не существует, ведь это совершенно разная архитектура.
Конечно, нет:) Потребуется только переустановка новой версии ОС
Сделать из 32-битной системы 64-битную можно и нужно, но только в том случае, если ваш процессор поддерживает более высокую разрядность – как правило, процессоры, выпущенные за последний десяток лет, являются 64 — битными.
Также стоит отметить, что такой переход будет целесообразным, если объём памяти на оперативном запоминающем устройстве ПК 4 ГБ и больше. Кроме того, некоторые версии популярных программ просто не имеют 32-битной версии, например, Фотошоп. Они могут работать только на 64-битной системе, и таких программ становится всё больше, в том числе игр. Это тоже серьёзный аргумент для смены системы.
Помимо всего прочего, существует проблема с драйверами для старых ПК, особенно ноутбуков. Так как вам придётся скачивать и устанавливать специальные драйверы именно под 64-битную версию. В противном случае работа некоторых устройств, служб и других элементов ПК может быть нарушена. Отсутствие драйверов может стать непреодолимым препятствием, но так случается только на очень старых ПК.
Теперь перейдём непосредственно к тому, как это сделать.
После выполнения всех этих действий переход на 64-битную версию можно считать завершённым. К сожалению, переустановка системы является единственным способом сменить Windows x32 на версию x64. Других вариантов нет и быть не может, поскольку невозможно провести столь глобальные изменения в самой системе, сохранив её.
Теперь вы знаете, что 32-битную систему возможно сделать 64-битной и знаете, как именно это сделать. Разумеется, придётся потратить время, но переход на Windows более высокой разрядности даст вам несколько преимуществ, которые однозначно стоят потраченного времени и усилий.
После переустановки системы нужно будет сначала установить все драйвера, теперь уже в 64-битной версии, а затем заново переустановить все необходимые программы.
Пишите в комментариях помогла ли вам эта статья и делитесь с другими пользователями информацией о том, получилось ли у вас перейти с одной разрядности на другую и в чём плюсы и минусы именно для вас.
Читайте также: