微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

长度分解器和缺少的扩展

如何解决长度分解器和缺少的扩展

长度反汇编器是否有可能在不支持像 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!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。