gpt4 book ai didi

assembly - native 可执行文件的哪一部分(特别是)使其不可移植?

转载 作者:行者123 更新时间:2023-12-04 13:04:56 24 4
gpt4 key购买 nike

乍一看,这听起来像是一个愚蠢的问题,但请耐心等待。

众所周知,一种 CPU 架构的二进制文件不能在其他 CPU 架构上运行。例如,不可能在 sparc64 芯片上运行(没有某种兼容层)x86 二进制文件。指令集是不同的,所以很明显是行不通的。

但是当二进制文件用于相同的 CPU,但用于不同的操作系统时,代码的哪一部分阻止执行成为可能。例如,在 x86 Linux 机器上运行 x86 Solaris 二进制文件。我假设有某种平台特定的 stub 与运行时链接器或进程调度器有关?

我很想知道。谢谢。

最佳答案

原因有很多。主要的,按“与金属的距离”排序的是:

  • 对于可执行文件,操作系统可能具有不同的二进制格式。在这种情况下,您将无法首先加载二进制文件。
  • 程序可能会使用另一种方法来表明他们希望进行系统调用(例如 INT21 与 INT80)。
  • 该程序可能依赖于其他操作系统中不存在的系统调用(例如 dlopen())
  • 该程序可能依赖于其他操作系统上不存在的标准库。
  • 该程序可能依赖于其他操作系统上不可用的其他库。

  • 当然,在意外环境中运行的程序可能会以多种方式严重失败。

    关于assembly - native 可执行文件的哪一部分(特别是)使其不可移植?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/932241/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com