Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 将可执行文件从一个平台重新编译到另一个平台_Assembly_Compiler Construction_Cross Platform_Cpu Architecture - Fatal编程技术网

Assembly 将可执行文件从一个平台重新编译到另一个平台

Assembly 将可执行文件从一个平台重新编译到另一个平台,assembly,compiler-construction,cross-platform,cpu-architecture,Assembly,Compiler Construction,Cross Platform,Cpu Architecture,似乎给出了针对任意两个平台(比如x86和ARM)的完整指令参考,应该可以将为第一个平台编译的程序转换为第二个平台。其中一个平台缺少的指令可以作为一系列更原始的指令来实现。最终,CPU所做的是I/O和算术。如果是这样,为什么人们开发在更高级别解释代码的仿真器,而不是开发指令转换器,使二进制文件能够以目标平台的本机速度运行?这称为二进制翻译,在多个应用程序中都可以实现。例如,英特尔对为ARM编译的Android应用程序执行二进制翻译。有些指令可以很容易地翻译,而另一些指令需要更复杂的仿真。通常,系统

似乎给出了针对任意两个平台(比如x86和ARM)的完整指令参考,应该可以将为第一个平台编译的程序转换为第二个平台。其中一个平台缺少的指令可以作为一系列更原始的指令来实现。最终,CPU所做的是I/O和算术。如果是这样,为什么人们开发在更高级别解释代码的仿真器,而不是开发指令转换器,使二进制文件能够以目标平台的本机速度运行?

这称为二进制翻译,在多个应用程序中都可以实现。例如,英特尔对为ARM编译的Android应用程序执行二进制翻译。有些指令可以很容易地翻译,而另一些指令需要更复杂的仿真。

通常,系统缓存、内存保护单元、GPU、音频硬件等之间的许多其他内容会有所不同。对于某些系统,在非常高的级别上仿真这些指令就足够了,但对于其他游戏机,尤其是老式游戏机,通常可以使用对时间非常敏感的循环计数代码,在水平缓冲期间写入gpu以执行光栅效果,仅举一个例子。这种方法在自我修改代码方面也存在问题。无论如何,至少有一个N64仿真器使用了静态重新编译,并且在某些情况下可以工作。感谢您准确地命名这个术语。现在更容易找到更多信息。另一种搜索这种静态二进制翻译的方法是…静态…不运行代码,而是分析和转换。动态二进制翻译是指在运行程序时,有时会对程序进行部分转换,而不是对整个程序进行尝试。每种方法都有各自的优缺点。关于Intel执行的二进制翻译:您是否有一些解释链接?好的评论: