如何解决长度分解器和缺少的扩展
长度反汇编器是否有可能在不支持像 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 举报,一经查实,本站将立刻删除。