如何从64位版本制作32位程序?

欧克

许多软件仅支持64位计算机,因为现在32位市场很小。但是,对于那些坚持使用32位计算机的用户,这意味着无法安装较新的版本,这可能会导致安全问题。一个示例是Firefox / Waterfox

通常,是否可以通过64位安装(.exe,.msi)制作32位程序?


查看更多:为什么要优先考虑浏览器的安全性?

LPC芯片

不,这是不可能的。之所以说这样的原因很广泛,甚至对于SuperUser来说甚至太宽泛,是因为您需要解释有关x86和x64是如何创建的,以及它们如何影响总体编程的基础知识。

但是简单地解释一下,可以归结为:

过去,我们有16位处理器。然后,英特尔制造了第一个32位处理器,也称为x86。这是8086、80286(简称286)等。这基本上是对16位处理器的修改,增加了额外的指令集。随着处理器系列的每个新版本的发布,英特尔为处理器系列增加了更多的指令集,最终导致指令集包含许多指令。英特尔不能仅仅删除旧的指令集,因为那将意味着不存在向后兼容性,并且英特尔希望继续支持较旧的处理器。

由于处理器为32位,因此有一个上限,即最高的32位数字。这意味着,内存分配最多只能增加到3.5GB。

过去,计算机还没有那么强大,因此如果intel从一开始就瞄准64位,那意味着要花更多的时间来计算相同的数字,因此性能会下降,因为要计算的数字更大。

此外,32位处理器在很长一段时间内都运行良好。

在某个时候,AMD进入了市场并推出了64位处理器。AMD创建了自己的指令集以允许使用64位,而完整保留32位的intel指令集以允许向后兼容32位。

考虑到它们实际上是不同的指令集,与创建64位程序时相比,创建32位程序的程序员将调用不同的例程。

现在,我解释了为什么很难做到这一点,让我们从编程的角度继续说明问题。

在编写程序代码时,首先要编写代码。如果您的代码向后兼容32位程序,则无法使用64位数字,也不能同时寻址超过3,5 gig的内存。基本上,您不能超过32位程序所面临的任何限制,否则您的程序将因此崩溃。

现在有了代码,只有您才能实际运行程序。为了使其他人可以运行您的程序,您必须将代码编译为可执行文件。这意味着易于阅读的代码将转换为处理器可以理解的指令。在编译期间,您可以指定程序是要在x86还是x64上运行,并且编译器将使用基于该处理器体系结构的指令集来生成代码。

如您所见,您不仅可以修改可执行文件并使它在其他可执行文件上工作。您首先需要将程序反编译为代码,然后使用不同的指令重新编译。

就是说,鉴于为x86编译的程序可以在x64上正常运行,因此可以安全地假定程序员创建了x64程序,因为他将打破x86体系结构的限制。因此,即使您将x64版本转换为x86版本,该程序也可能会不稳定,因为您会越过32位程序可以执行的操作的局限性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过一项设置运行Eclipse 64位和32位版本

来自分类Dev

64位可执行文件的运行速度低于32位版本

来自分类Dev

如何获得LinqToExcel 64位版本

来自分类Dev

如何在32位批处理脚本中运行Windows实用程序的64位版本(例如msiexec)?

来自分类Dev

link.exe,选择64位或32位版本的Kernel32.lib

来自分类Dev

Zoom for Ubuntu的32位版本?

来自分类Dev

我应该下载Ubuntu的32位版本还是64位版本?

来自分类Dev

强制安装32位Deb失败后,如何安装64位版本?

来自分类Dev

如何从64位创建32位版本的Python代码

来自分类Dev

如何在64位Cent OS服务器上安装32位版本的Perl?

来自分类Dev

强制安装32位Deb失败后,如何安装64位版本?

来自分类Dev

为什么Windows的64位版本比32位版本大?

来自分类Dev

如何在Visual Basic 2010中获取Windows 32或64位版本?

来自分类Dev

将Ubuntu从32位版本升级到64位版本

来自分类Dev

如何安装相同-dev软件包的32位和64位版本?

来自分类Dev

如何根据32位或64位版本的PowerShell排除配置文件的一部分

来自分类Dev

您可以制作具有Pro / Home和32/64位版本的Windows 10 ISO吗?

来自分类Dev

Windows 8.1 32位版本升级到Windows 10 64位版本

来自分类Dev

如何安装32位版本的Google NaCl SDK?

来自分类Dev

如何安装64位操作系统而不是旧的32位版本?

来自分类Dev

给定一个同时具有32位和64位版本的程序,如何将它们以不同的名称同时放入我的PATH中?

来自分类Dev

如何在32位或64位版本的软件包之间进行选择?

来自分类Dev

安装64位版本Ubuntu

来自分类Dev

Ubuntu 32或64位版本?

来自分类Dev

如何在64位Linux上找到32位版本的Java的路径?

来自分类Dev

mingw gdb 64位版本

来自分类Dev

如何专门下载64位版本的Ubuntu?

来自分类Dev

Flywaydb 32位版本

来自分类Dev

如何使用CMake查找32位版本的zlib

Related 相关文章

  1. 1

    通过一项设置运行Eclipse 64位和32位版本

  2. 2

    64位可执行文件的运行速度低于32位版本

  3. 3

    如何获得LinqToExcel 64位版本

  4. 4

    如何在32位批处理脚本中运行Windows实用程序的64位版本(例如msiexec)?

  5. 5

    link.exe,选择64位或32位版本的Kernel32.lib

  6. 6

    Zoom for Ubuntu的32位版本?

  7. 7

    我应该下载Ubuntu的32位版本还是64位版本?

  8. 8

    强制安装32位Deb失败后,如何安装64位版本?

  9. 9

    如何从64位创建32位版本的Python代码

  10. 10

    如何在64位Cent OS服务器上安装32位版本的Perl?

  11. 11

    强制安装32位Deb失败后,如何安装64位版本?

  12. 12

    为什么Windows的64位版本比32位版本大?

  13. 13

    如何在Visual Basic 2010中获取Windows 32或64位版本?

  14. 14

    将Ubuntu从32位版本升级到64位版本

  15. 15

    如何安装相同-dev软件包的32位和64位版本?

  16. 16

    如何根据32位或64位版本的PowerShell排除配置文件的一部分

  17. 17

    您可以制作具有Pro / Home和32/64位版本的Windows 10 ISO吗?

  18. 18

    Windows 8.1 32位版本升级到Windows 10 64位版本

  19. 19

    如何安装32位版本的Google NaCl SDK?

  20. 20

    如何安装64位操作系统而不是旧的32位版本?

  21. 21

    给定一个同时具有32位和64位版本的程序,如何将它们以不同的名称同时放入我的PATH中?

  22. 22

    如何在32位或64位版本的软件包之间进行选择?

  23. 23

    安装64位版本Ubuntu

  24. 24

    Ubuntu 32或64位版本?

  25. 25

    如何在64位Linux上找到32位版本的Java的路径?

  26. 26

    mingw gdb 64位版本

  27. 27

    如何专门下载64位版本的Ubuntu?

  28. 28

    Flywaydb 32位版本

  29. 29

    如何使用CMake查找32位版本的zlib

热门标签

归档