为什么不能在应用程序中转换体系结构?

feedc0de

在x32机器上运行的应用程序具有仅在x32机器上工作的汇编程序命令。ARM机器还有其他命令。为什么我不能从应用程序转换“汇编程序命令”以使其在其他体系结构上运行?

标记

从理论上讲,这很容易:任何一个图灵完备的系统都可以计算任何其他图灵完备的系统可以计算的任何东西。实际上,它要复杂得多。

最大的是软件环境。几乎所有的程序都假定它将与提供广泛功能的操作系统进行交互:抽象出硬件访问的详细信息,将程序与同一台计算机上运行的其他程序隔离开来,提供通用的代码库,等等。在。在将程序转换为新的指令集之后,您仍然需要提供支持软件。

另一个主要的是硬件。计算机不只是CPU,而且程序会对其他部分做出某些显式或隐式假设。例如,将字节组合成更大的数据类型的顺序会有所不同,并且,如果程序从大字节序的计算机转换为小字节序的计算机,则执行位级操作的程序将会遇到麻烦,反之亦然。内存访问也可能受到限制,例如。目标系统可能需要将内存读取对齐为四个字节的倍数,而原始系统则没有这样的要求。还有一些更细微的问题,例如,x86 FPU对所有浮点计算都使用80位精度,即使在精度较低的数字上也是如此。依靠这种额外内部精度的程序将在具有64位FPU的系统上失败。

特别是x86体系结构具有使转换程序变得困难的功能:指令的大小和对齐方式各不相同。这意味着,在一般情况下,您无法查看程序并立即告诉它所包含的指令。在假定的指令对齐方式和实际的指令对齐方式之间相差一字节(例如您可能会在反盗版陷阱或紧凑编码演示中发现)可能意味着程序的工作方式发生了巨大变化。

有些程序可以让您将程序从一种体系结构转换为另一种体系结构,但是它们通常要么在运行时使用动态重新编译来重新编写该程序,要么它们完全模拟原始系统,并在出现每个指令时对其进行重新解释。执行。在这两种情况下,用户都需要提供运行该程序的软件环境。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

企业应用程序的体系结构

Web应用程序的体系结构图是什么?

移动应用程序(MVC除外)中使用的体系结构模式是什么?

“与软件应用程序的目的特别相关的体系结构”是什么意思?

Android体系结构应用程序术语

Git:更改我的应用程序体系结构

Android-聊天应用程序的体系结构

简单计时器应用程序的体系结构

Azure移动服务应用程序的体系结构

在哪里解释了iOS应用程序的体系结构?

C ++:具有API的应用程序体系结构

跨平台消息传递应用程序的体系结构

骨干Web应用程序体系结构-最佳实践

单页JavaScript Web应用程序的体系结构?

Spring如何适合我的应用程序体系结构?

桌面应用程序:体系结构框架?

AJAX MVC应用程序的体系结构

搜索元数据的应用程序的体系结构

使用CouchDB / PouchDB时应用程序的体系结构

REST应用程序中DatabaseConnection的体系结构

如何组织Java Swing应用程序体系结构?

将ios应用程序转换为64位体系结构| 构建架构设置| Xcode 6.1.1

使用MVC5的企业级应用程序体系结构的最佳实践是什么?

用于 Web 到长后台服务应用程序结构应用程序的 Azure 体系结构

如何在build.gradle中为Android应用程序指定支持的体系结构?

用于多种应用程序的多种环境的木偶体系结构

具有运行时权限的基于gps的应用程序的体系结构

加密数据库中数据的安全应用程序的体系结构

无服务器Web应用程序体系结构