长度分解器和缺少的扩展

问题描述

长度反汇编器是否有可能在不支持像 VEX/EVEX/MVEX/XOP 前缀的指令的情况下正确识别指令的大小?

我问是因为我写了一个基本的长度反汇编器,但它只支持(x86和x86_64):

  • 一般/系统说明
  • x87 FPU
  • MMX
  • 上海证券交易所
  • SSE2
  • SSE3
  • SSE4.1
  • SSE4.2
  • VMX
  • SMX

整合 Intel/AMD 包含的每一个扩展需要相当多的时间+实际检查进行反汇编的 CPU 是否真的支持这些指令中的每一条,而 AFAIK 大多数 CPU 支持上述扩展。

>

那么,在任何情况下,不受支持的指令是否会导致字节序列被解释为我支持的另一条指令,该指令的大小不同并且会弄乱以下所有指令?

我确实可以浏览冗长的 Intel 和 AMD 手册并进行一些思考,但是如果这里有人可以根据他们的知识快速给我一个直接的答案,我会更喜欢它。谢谢。

解决方法

无法识别 *VEX 编码的 x86-64 反汇编程序是废品;我认为你的问题的答案是否定

幸运的是,剖析新前缀并不难,见AVX512 Chapter 4, 特别是如果您已经设法反汇编 SSE* 指令集。

Netwide Disassembler 可以为您提供很多帮助(尽管它会受到一些 bugs 的影响)。您可以使用它来验证您的产品是否正常工作。 根据 aspera ad astra!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...