如何从32位对应的代码中找到64位汇编代码的等效/对应翻译?

时间:2013-05-20 06:11:05

标签: assembly

如果我知道编译程序的32位版本中的内容(查看汇编代码),我怎样才能找到64位指令,其中相同的东西在64位版本的程序中执行(其中除了64位以外是相同的,没有附加功能)

有人建议我以某种方式学习下面的手册以获得答案:http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

但问题是我不知道他们在暗示什么,有没有例子/样本有人可以告诉我这看起来如何?

基本上 - 我可以从程序的32位版本中获取一组行并将它们“手动”转换为64位代码,以便我可以在64位版本中找到相应的部分吗?

1 个答案:

答案 0 :(得分:1)

即使您“翻译”了它们,也不太可能找到一对一的通信。 x64具有额外的寄存器,附加寻址方案,不同的结构和数据大小以及对其施加限制的对齐要求。加上编译器执行的优化,你很可能无法按照你的建议行事。

您可以通过找到附近的call指令并通过目标或唯一(或罕见)常数识别它们来获取提示。

说了这么多,你究竟想要实现什么以及你想要解决的问题是什么?