0

LE(线性可执行)文件有什么指令集架构?链接的文章说:混合 16/32 位

  1. 这是否意味着同一个 LE 文件可以包含 16 位和 32 位代码?
  2. 如何检测它是否包含 16 位 (8086) 代码?
  3. 如何检测它是否包含 32 位 (i386) 代码?

请注意,我知道可以区分 80286 和 i386 (80386)的CPU 类型字段(请参见此处)。但是,我将此解释为 CPU 类型要求,因此未指定架构,例如,十六进制40在两者中均有效:它表示inc ax16 位代码和inc eax32 位代码,两者都可以通过80386 CPU。我对40LE 文件代码中的十六进制含义很感兴趣。

4

1 回答 1

1

我能够找到https://www.program-transformation.org/Transform/PcExeFormat,基于此答案如下。

如果设置了对象表条目中的对象标志位 13,则为 32 位,否则为 16 位。

在可执行条目表中,LX 捆绑类型字节的 LE 标志位 1 区分 16 位和 32 位。

由于这些表中可能有多个条目,因此单个 LE 或 LX 文件可能同时包含 16 位和 32 位代码。

于 2020-04-07T16:09:17.670 回答