【问题标题】:How to detect architecture of an LE (linear executable) file?如何检测 LE(线性可执行文件)文件的架构?
【发布时间】:2020-04-07 01:07:31
【问题描述】:

LE (linear executable) file 有什么指令集架构?链接的文章说:混合 16/32 位

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

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

【问题讨论】:

  • 致反对者:你能建议我改进这个问题的方法吗?我非常仔细地研究它以使其具体且易于回答(对于那些知道答案的人)。

标签: windows executable-format


【解决方案1】:

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

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

在可执行入口表中,LX束类型字节的LE标志位1区分16位和32位。

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

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 2020-01-16
    相关资源
    最近更新 更多