如何从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条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档