从理论上讲,通用二进制格式是否可行?

问题描述

首先,这完全是一个理论问题,我认为这是完全不可能的。另外,我的意思是跨操作系统中的“通用”,而不是跨处理器。为简单起见,我们假设 x86-64。我知道不同的操作系统使用不同的系统调用(例如,Linux 使用 int 0x80 和 Windows int 0x21 作为一个巨大的简化)。

例如,Windows 使用可移植可执行 (PE) 二进制格式,而 Linux(据我所知还有 OSX,我对该操作系统并不熟悉)使用可执行和可链接格式 (ELF)。

现在;为了便于论证,让我们考虑一个由二进制、文本和数据组成的应用程序“x”。从理论上讲,是否有可能有一个独立于平台的二进制格式包装器来标记这三个独立于操作系统的段?

*------------------*
| Universal Header |
|------------------|
| Libraries for    |
| each OS the app  |
| should run on    |
|------------------|
| Binary Code      |
*------------------*

我之所以这么问是因为我想知道理论上是否有可能编写一个“容器”来自动检测操作系统、加载二进制应用程序并提供一个“适配器”库来将调用转换为抽象库到实际的、依赖于操作系统的系统调用。我想象的类似于 JVM,但是没有进行 JITing/解释,而是包装程序所做的只是加载和设置实际的二进制文件,顾名思义,它是二进制文件,以及标准化库,可自动将对其的调用转换为特定于操作系统的系统调用。如果可以使用通用二进制格式,您甚至可以发布多平台可执行文件。我不打算对此进行实际编码,我只是好奇这在理论上是否可行。我知道这是一罐蠕虫,但我还是很好奇。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)