我一直想学习装配,但似乎有一个与装配有关的信息的丛林很难解释.我还没有能够谷歌"学习集会"并开始.
首先,有两种语法:Intel和AT&T.有什么不同?为什么还有两个在使用?我何时需要使用一个与另一个?
其次,那里有很多芯片.英特尔AMD VS,32位与64位x86 VS其他架构......甚至86确实是一个全系列的芯片.那么,我怎么知道我从某个网页学习的程序集是否适用于我的机器?
存在更多变化(操作系统甚至在确定代码如何运行中起作用.
所以,最大的问题是,有了所有这些变量,我怎么知道我应该学习什么类型?什么是最常见的?当存在所有这些变化时,人们如何"知道装配"?
有时候,从C或C++等高级语言中理解反汇编是有用的.阅读有关汇编的书籍显然是理解编译器输出的必要部分,但根据我的经验,从头开始编写汇编代码与阅读和理解编译器生成的操作码完全不同.我在汇编时所知道的书籍并没有很好地涵盖那部分,我相信如果你曾经接触过汇编,那么主要是通过尝试理解编译器输出.
您是否了解如何解释编译器输出的深入教程(或书籍)?
我的想法是介绍常见的高级语言习语,以及它们如何通过常见的编译器(msvc和gcc)转换为汇编.