нет, это невозможно. Причина довольно широка, может быть, даже слишком широка для суперпользователя, учитывая, что вам нужно будет объяснить основы того, как были созданы x86 и x64, и как это влияет на программирование в целом.
но если коротко объяснить, то все сводится к следующему:
в прошлом у нас были 16-битные процессоры. Затем intel сделала первый 32-разрядный процессор, также известный как x86. Это 8086, 80286 (286 для краткости) etc... Это было в основном модификация 16-битных процессоров с добавлением дополнительных наборов команд. С каждым новым выпуском серии процессоров Intel добавляла в семейство процессоров дополнительные наборы инструкций, что в конечном итоге приводило к тому, что набор инструкций содержал множество инструкций. Intel не мог просто удалить старые наборы инструкций, потому что это означало бы, что не было обратной совместимости, и Intel хотел продолжать поддерживать старые процессоры.
как процессор 32 бита, есть верхний предел, а именно наибольшее 32-битное число. Это означает, что объем выделяемой памяти может достигать примерно 3,5 ГБ.
в те времена компьютеры были не такими мощными, так что если бы intel изначально стремилась к 64 битам, это означало бы, что гораздо больше времени было потрачено на вычисление тех же чисел, поэтому производительность снизилась бы просто потому, что цифры для вычисления больше.
кроме того 32-битные процессоры работали довольно хорошо в течение длительного времени.
в какой-то момент AMD вошел рынок и ввел обработчик 64bit. AMD создали свои собственные наборы инструкций, чтобы позволить работать с 64 битами, сохраняя наборы инструкций intel для 32 бит в такт, чтобы обеспечить обратную совместимость с 32 битами.
учитывая, что на самом деле это разные наборы команд, программист, создающий 32-битные программы, будет вызывать другие процедуры, чем при создании 64-битных программ.
теперь, когда я объясню, почему это трудно сделать, давайте продолжим объяснять проблема с точки зрения программирования.
когда вы кодируете программу, вы сначала пишете свой код. Если ваш код обратно совместим с 32-битными программами, вы просто не можете использовать 64-битные номера и не можете одновременно обращаться к более чем 3,5 гигабайтам памяти. В принципе, вы не можете пересекать любые границы, что 32-битные программы лицо или ваша программа рухнет, когда сделано.
поскольку теперь у вас есть код, только вы можете запустить программу. Сделать его так, что другое люди могут запустить вашу программу, вы должны скомпилировать код в исполняемый. Это означает, что легко читаемый код преобразуется в инструкции, понятные процессору. Во время компиляции вы указываете, должна ли ваша программа работать на x86 или x64, и компилятор будет генерировать код, используя наборы инструкций, основанные на этой архитектуре процессора.
Как вы можете видеть, вы не можете просто изменить исполняемый файл и заставить его работать на другой исполняемый файл. Сначала нужно декомпилировать программа закодировать, а затем перекомпилировать его с помощью различных инструкций.
тем не менее, учитывая, что программа, скомпилированная для x86, будет изначально работать на x64, можно с уверенностью предположить, что программист создает программу x64, потому что он собирается нарушить ограничения архитектуры x86. Таким образом, даже если вы должны были превратить x64 версию в x86 версии, вполне вероятно, что программа будет нестабильной, как вы будете пересекать ограничения, что 32-разрядная программа может сделать.