Windows 如何检测LE(线性可执行文件)文件的体系结构?

Windows 如何检测LE(线性可执行文件)文件的体系结构?,windows,executable-format,Windows,Executable Format,A有什么指令集体系结构?链接文章说:混合16/32位 这是否意味着同一个LE文件可以包含16位和32位代码 如何检测它是否包含16位(8086)代码 如何检测它是否包含32位(i386)代码 请注意,我知道CPU类型字段(请参阅)可以区分80286和i386(80386)。但是,我将其解释为CPU类型要求,因此这并没有指定体系结构,例如,十六进制40在两种情况下都有效:在16位代码中,它意味着inc ax,在32位代码中,它意味着inc eax,两者都可以由80386 CPU执行。我对十六进制4

A有什么指令集体系结构?链接文章说:混合16/32位

  • 这是否意味着同一个LE文件可以包含16位和32位代码
  • 如何检测它是否包含16位(8086)代码
  • 如何检测它是否包含32位(i386)代码
  • 请注意,我知道CPU类型字段(请参阅)可以区分80286和i386(80386)。但是,我将其解释为CPU类型要求,因此这并没有指定体系结构,例如,十六进制
    40
    在两种情况下都有效:在16位代码中,它意味着
    inc ax
    ,在32位代码中,它意味着
    inc eax
    ,两者都可以由80386 CPU执行。我对十六进制
    40
    在LE文件的代码中的含义很感兴趣。

    我能够找到,基于此,答案如下

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

    在可执行项表中,LX bundle类型字节的LE标志位1区分16位和32位


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

    向下投票人:您能建议一种改进此问题的方法吗?我非常仔细地做了这件事,以使它更具体、更容易回答(对于那些知道答案的人来说)。