Многие программы поддерживают только 64-битные машины, потому что рынок 32-битных сейчас невелик. Однако для тех, кто застрял на 32-битных машинах, это означает, что более новые версии не могут быть установлены, и это может привести к проблемам безопасности. Одним из примеров является Firefox/Waterfox. В общем, есть ли способ сделать 32-битную программу из 64-битной установки (.exe, .msi)?
Смотрите больше: Почему безопасность браузера должна быть приоритетом?
изменён Ooker 739
задан Ooker 739
4 ответа 4
Нет, это невозможно. Причина довольно обширная, может быть, даже слишком широкая для SuperUser, учитывая, что вам нужно будет объяснить основы того, как создавались x86 и x64, и как это влияет на программирование в целом. Но, чтобы кратко объяснить, это сводится к следующему: В прошлом у нас были 16-битные процессоры. Затем Intel выпустила первый 32-битный процессор, также известный как x86.
Это 8086, 80286 (286 для краткости) и т.д . В основном это была модификация 16-битных процессоров с добавлением дополнительных наборов команд. С каждым новым выпуском их серии процессоров Intel добавляла все больше наборов инструкций к семейству процессоров, что в итоге приводило к тому, что набор инструкций содержал много-много инструкций.
КАК 64 БИТНУЮ ИГРУ ЗАПУСТИТЬ НА 32 БИТНОЙ СИСТЕМЕ 2018(CS:GO,PUBD,DOTA 2)
Intel не могла просто удалить старые наборы инструкций, потому что это означало бы, что обратной совместимости не было, и Intel хотела продолжать поддерживать старые процессоры. Поскольку процессор 32-разрядный, существует верхний предел, а именно максимальное 32-разрядное число. Это означает, что объем памяти только до 3,5 ГБ.
Раньше компьютеры были не такими мощными, поэтому если Intel с самого начала стремилась к 64-битным вычислениям, это означало бы, что на вычисление одинаковых чисел ушло бы гораздо больше времени, поэтому производительность снизилась бы просто потому, что числа для вычисления были больше. К тому же 32-битные процессоры работали довольно долго.
В какой-то момент AMD вышла на рынок и представила 64-битный процессор. AMD создала свои собственные наборы инструкций, позволяющие работать с 64-битными кодами, в то же время сохраняя наборы команд Intel для 32-битных тактов, чтобы обеспечить обратную совместимость с 32-битными.
Учитывая, что это фактически разные наборы инструкций, программист, который создает 32-битные программы, будет вызывать другие процедуры, чем когда они создают 64-битные программы. Теперь, когда я объясню, почему это трудно сделать, давайте продолжим объяснять проблему с точки зрения программирования. Когда вы кодируете программу, вы сначала пишете свой код.
Если ваш код обратно совместим для 32-битных программ, вы просто не можете использовать 64-битные числа и не можете одновременно адресовать более 3,5 гигабайт памяти. По сути, вы не можете пересекать какие-либо ограничения, с которыми сталкиваются 32-битные программы, иначе ваша программа будет аварийно завершена.
Поскольку теперь у вас есть код, только вы можете запустить вашу программу. Чтобы сделать так, чтобы другие люди могли запускать вашу программу, вы должны скомпилировать код в исполняемый файл. Это означает, что легко читаемый код преобразуется в инструкции, понятные процессору.
Как изменить 32 bit на 64 bit, если телефон не даёт возможности изменения.
Во время компиляции вы указываете, должна ли ваша программа работать на x86 или x64, и компилятор будет генерировать код, используя наборы команд на основе этой архитектуры процессора. Как видите, вы не можете просто изменить исполняемый файл и заставить его работать на другом исполняемом файле. Сначала вам нужно декомпилировать программу в код, а затем перекомпилировать ее, используя различные инструкции. Тем не менее, учитывая, что программа, скомпилированная для x86, будет изначально работать на x64, можно с уверенностью предположить, что программист создает программу x64, потому что он собирается нарушить ограничения архитектуры x86. Таким образом, даже если вы захотите превратить версию для x64 в версию для x86, вполне вероятно, что программа будет нестабильной, поскольку вы преодолеете ограничения, которые может делать 32-разрядная программа.
ответ дан LPChip 36k
Теоретически это можно сделать!
- Запуск x86-64 ASM на процессоре x86-32
- Как запустить Windows из эмулятора на компьютере, отличном от x86?
Несмотря на это, я еще не видел никого, кто бы писал такой конвертер для одного двоичного файла, потому что в основном вам также нужно будет эмулировать все системные и библиотечные вызовы, что в любом случае было бы лучше для запуска всего эмулятора. Qemu также имеет возможность эмулировать только пользовательское пространство, так что на самом деле можно запускать программу вместе с необходимыми библиотеками без полноценной ОС
Однако, если ваш компьютер только 32-разрядный, это означает, что ему уже более 10 лет. Практически любые процессоры Intel от Pentium 4 Prescott в 2004 году (кроме некоторых ранних процессоров Atom) и все процессоры AMD от Athlon 64 в 2003 году и выше поддерживают 64-разрядную архитектуру. Пришло время обновить.
Если ваш компьютер достаточно новый, чтобы поддерживать x86_64 и VT-x, вы можете запустить 64-битную виртуальную машину внутри хоста, однако это не рекомендуется, и производительность будет даже хуже, чем при работе 64-битной ОС с 32-битной ВМ внутри. 64-разрядная ОС не требует вдвое большей памяти, чем 32-разрядная, как думали многие, поэтому даже при наличии всего 2 ГБ ОЗУ 64-разрядная ОС обычно все еще быстрее благодаря удвоенному количеству регистров и многим другие вещи. Между 1 и 2 Гб оперативной памяти, это спорно, но я бы на 64-битную
Тем не менее, что касается мер безопасности, 32-разрядные ОС часто запаздывают с исправлениями безопасности. Например, исправления Meltdown и Spectre устанавливаются для 32-битной Linux более чем через полгода после исправления 64-битной Linux. Исправления Meltdown предоставляются для 64-битной Windows 10, сборка 1507 и выше, но 32-битные пользователи защищены только после сборки 1511. И даже если они исправлены, такие древние машины обычно сталкиваются с гораздо большим влиянием на производительность, потому что у них нет новых инструкций и функций, чтобы компенсировать замедление. По этой причине MS не включает патч на некоторых старых ПК, если это явно не указано пользователем.
Иногда их вообще не исправляют, потому что у них недостаточно базы пользователей, а значит, нет стимула тратить огромные усилия. Эту проблему также невозможно исправить без аппаратной поддержки, если это аппаратная ошибка. Например, недавние атаки по побочным каналам, такие как Spectre или L1TF, также требуют обновленного микрокода, поэтому, если производитель процессора и / или системной платы не выпустит обновление прошивки, вам не повезло! Эти ошибки влияют на ЦП в последние два десятилетия, но невозможно предоставить исправления для очень старых систем. Windows 7 также отказалась от поддержки Pentium 3, потому что ее слишком сложно патчить без поддержки SSE2, или потому что слишком мало людей используют ее на этих процессорах.
32-битная Windows также более уязвима, потому что:
- У него меньше возможностей для горячего исправления. Только ~ 30% 32-битного ядра Windows могут быть исправлены в горячем состоянии, по сравнению со 100% 64-битного ядра . Он также не поддерживает Kernel Patch Protection.
- Не требует подписи драйверов, как в 64-битной Windows
- На ASLR меньше места для работы
Если вы запускаете 64-битную ОС в эмуляторе, это будет даже медленнее. И даже если вы примете скорость сканирования и используете эмулятор, вредоносные программы на хосте все равно могут атаковать виртуальную машину в такой уязвимой системе. Опять же, время для обновления, если вы действительно заботитесь о безопасности, или вам придется бесконечно жить с менее защищенной системой
Дальнейшее чтение:
- 32-битный безопаснее, чем 64-битный?
- 64-битная Windows безопаснее 32-битной?
- Почему 64-разрядная версия Windows более безопасна
- Как преобразовать 32-битный скомпилированный двоичный файл в 64-битный
Источник: poweruser.guru
Как запускать в Linux 64-bit WINE в режиме 32-bit
В настоящее время я использую Ubuntu 64 Bit на своем ноутбуке и хочу установить некоторые программы Windows с Wine, но для работы некоторых программ требуется 32-битная версия Wine, даже если она находится в 64-битной среде…
Являясь пользователем Fedora большую часть времени, то никогда не была проблемой в этом дистрибутиве установки 32-битных версий приложений внутри 64-битной системы, но я не нашел сразу способа сделать это в Ubuntu.
И поэтому решил написать это краткое руководство как запустить Windows-программу в 32-битном режиме, когда у вас установлена 64-битная версия ОС Linux.
Итак, как решить вроде простую задачу.
Если для вашей системы вы установили Wine в 64-битной версии Ubuntu, то Wine будет установлен только в 64-битном префиксе.
Источник: linuxthebest.net
Как запускать старые версии программ на современном компьютере
Прогресс не стоит на месте. Но что делать, если вы хотите запускать старые версии программ на новеньком компьютере с последней версией операционной системы. Скажем, вы души не чаете в игре, которую помните еще со времен Windows 98.
На самом деле, бесконечно использовать одну и ту же программу нельзя. Ведь технологии меняются. Разработчикам операционных систем приходится делать выбор между обратной совместимостью и новейшими функциями. Конкурентное давление заставляет их в большинстве случаев выбирать второе.
Все же, если старая версия программы была создана для Windows 98, есть большой шанс, что она более-менее сносно будет работать и под Windows 7 или даже 8. Но если программа была старой еще в 1998 году, или создавалась позже, но программисты хорошо позаботились о ее обратной совместимостью с ранними версиями Windows, то на большинстве современных компьютеров возникнут проблемы.
Если ваша попытка установить или запустить старую версию программы завершается сообщением об ошибке, то очень похоже, что 16-битное приложение вы пытаетесь заставить работать в в 64-битной среде. А это невозможно.
Первые версии Windows были 16-битными, и в них запускались только 16-битные программы. С приходом Windows 95 осуществлен переход на 32-битную среду. Но в ней могли работать как 16-, так и 32-битные программы. Существуют 32- и 64-разрядные варианты Windows Vista, 7 и 8 (какой вариант установлен на вашем компьютере, зависит от типа процессора). В 64-битной версии операционной системы могут работать 32- и 64-битные программы, но не 16-битные.
Вы не знаете, установлена ли на вашем компьютере 32- или 64-разрядная версия Windows? Чтобы узнать это перед тем, как запускать старые версии программ в Windows 7 нажмите на кнопку Пуск в левом нижнем углу рабочего стола, и кликните правой кнопкой мыши по Компьютер. В контекстном меню кликните по Свойства. В Windows 8 нажмите на Поиск, введите «system», выберите Настройки, а затем — Система. В открывшемся окне появится информация об установленной системе, в том числе — о ее разрядности.
В 32-разрядной Windows вы можете смело запускать старые версии программ
- Кликните по ярлыку такой программы или ее исполняемому файлу (с расширением .exe) правой кнопкой мыши, в открывшемся меню выберите «Свойства».
- Перейдите на вкладку Совместимость. Активируйте пункт «Запустить программу в режиме совместимости с…» и выберите ту версию операционной системы, в которой она точно работает.
- После этого попытайтесь снова запустить старую программу.
- Возможно, придется перебрать несколько вариантов, пока не найдете нужный.
Для тех, кто работает в 64-битном мире, выбор ограничен
- Если у вас Windows 7 Professional, Enterprise или Ultimate, то можете скачать бесплатные виртуальные машины Windows XP Mode или Windows Virtual PC. Они создадут 32-битную «систему в системе».
- Но если у вас на компьютере установлена 64-разрядная Windows Vista, Windows 8 или Windows 7 Home, то этот вариант не для вас. В этом случае можно воспользоваться бесплатной виртуальной машиной VMWare Player, но придется найти дистрибутив старой операционной системы и установить ее.
- Для запуска виртуальной машина под Windows 8 Pro или Ultimate я рекомендую использовать имеющийся здесь Hyper-V, но это не отменяет необходимость поиска дистрибутива со старой версией операционной системы.
Источник: kakdelateto.ru