如何检测 LE(线性可执行文件)文件的体系结构?
How to detect architecture of an LE (linear executable) file?
LE (linear executable) file 有什么指令集架构?链接的文章说:混合 16/32 位。
- 是否意味着同一个 LE 文件可以包含 16 位和 32 位代码?
- 如何检测是否包含16位(8086)码?
- 如何检测它是否包含 32 位 (i386) 代码?
请注意,我知道可以区分 80286 和 i386 (80386) 的 CPU 类型 字段(参见 here)。但是,我将其解释为 CPU 类型要求,因此未指定体系结构,例如十六进制 40
在两者中均有效:它在 16 位代码中表示 inc ax
,在 32 位代码中表示 inc eax
,两者都可以由 80386 CPU.我对十六进制 40
在 LE 文件代码中的含义很感兴趣。
我找到了 https://www.program-transformation.org/Transform/PcExeFormat ,答案如下。
如果设置了对象 table 条目中的对象标志位 13,则它是 32 位的,否则它是 16 位的。
在executable入口table,LX包类型字节的LE标志位1区分16位和32位。
由于这些 table 中可以有多个条目,因此单个 LE 或 LX 文件可能同时包含 16 位和 32 位代码。
LE (linear executable) file 有什么指令集架构?链接的文章说:混合 16/32 位。
- 是否意味着同一个 LE 文件可以包含 16 位和 32 位代码?
- 如何检测是否包含16位(8086)码?
- 如何检测它是否包含 32 位 (i386) 代码?
请注意,我知道可以区分 80286 和 i386 (80386) 的 CPU 类型 字段(参见 here)。但是,我将其解释为 CPU 类型要求,因此未指定体系结构,例如十六进制 40
在两者中均有效:它在 16 位代码中表示 inc ax
,在 32 位代码中表示 inc eax
,两者都可以由 80386 CPU.我对十六进制 40
在 LE 文件代码中的含义很感兴趣。
我找到了 https://www.program-transformation.org/Transform/PcExeFormat ,答案如下。
如果设置了对象 table 条目中的对象标志位 13,则它是 32 位的,否则它是 16 位的。
在executable入口table,LX包类型字节的LE标志位1区分16位和32位。
由于这些 table 中可以有多个条目,因此单个 LE 或 LX 文件可能同时包含 16 位和 32 位代码。