关于理解装配输出的教程/书籍

时间:2010-12-01 12:00:59

标签: c++ c assembly

有时候,从C或C ++等高级语言中理解反汇编是有用的。阅读有关汇编的书籍显然是理解编译器输出的必要部分,但根据我的经验,从头开始编写汇编代码与阅读和理解编译器生成的操作码完全不同。我在汇编时所知道的书籍并没有很好地涵盖那部分,我相信如果你接触过汇编,那么主要是通过尝试理解编译器输出。

您是否了解有关如何解释编译器输出的深入教程(或书籍)?

我的想法是介绍常见的高级语言习语,以及它们如何被普通编译器(msvc和gcc)翻译成汇编。

3 个答案:

答案 0 :(得分:4)

关于SO的许多类似问题:

大多数海报的目标与你相同,即阅读汇编代码而不是写新代码。

答案 1 :(得分:2)

我知道有关读取x86程序集的所有内容,我通过在反汇编视图中单步调试调试器来学习。同时打开操作码参考是有用的,但说实话,你可以在没有大部分时间的情况下生活,因为只要编译器没有进行太多优化,你就知道它从C源实际上做了什么,变量的内容等。

[*]嗯,大多数事情。

答案 2 :(得分:0)

您可以编译一些c,c ++文件并保留汇编器输出(我认为是-s选项),并将生成的输出与源文件进行比较。

这可以帮助您理解生成的汇编代码并识别重复模式(方法/函数调用,返回,循环,初始化等)。不要启用优化,这会转换生成的代码并使其更难理解。

相关问题