我一直想学习装配,但似乎有一个与装配有关的信息的丛林很难解释.我还没有能够谷歌"学习集会"并开始.
首先,有两种语法:Intel和AT&T.有什么不同?为什么还有两个在使用?我何时需要使用一个与另一个?
其次,那里有很多芯片.英特尔AMD VS,32位与64位x86 VS其他架构......甚至86确实是一个全系列的芯片.那么,我怎么知道我从某个网页学习的程序集是否适用于我的机器?
存在更多变化(操作系统甚至在确定代码如何运行中起作用.
所以,最大的问题是,有了所有这些变量,我怎么知道我应该学习什么类型?什么是最常见的?当存在所有这些变化时,人们如何"知道装配"?
gre*_*ade 12
首先,有两种语法:Intel和AT&T.有什么不同?
的主要区别是表面的:扭转操作数,例如.
为什么还有两个在使用?我何时需要使用一个与另一个?
英特尔使用的语法与几乎所有其他处理器ISA文档使用的语法大不相同.
GNU as对所有平台使用AT&T语法,并支持x86和x86_64的Intel语法.
其他汇编程序(如NASM,MASM等)仅使用Intel语法.
那么,我怎么知道我从某个网页学习的程序集是否适用于我的机器?
它记录在Intel和AMD的处理器手册中.Sandpile也是一个很好的资源.
所以,最大的问题是,有了所有这些变量,我怎么知道我应该学习什么类型?什么是最常见的?
最广泛支持的是Pentium-pro类,即所谓的"i686"和K8级(称为"x86_64"或"amd64"或"EM64T").其中的变化是支持MMX还是SSE或其变体.查找CPUID指令 - 它将为您运行的处理器提供支持信息.
当存在所有这些变化时,人们如何"知道装配"?
我认为没有人"知道"x86.每个需要的人都有处理器手册的副本.
组装的重点在于您直接使用CPU基本指令集进行编码.由于不同的CPU具有不同的指令集,因此它们都是不同的.但是,一旦你知道一个"汇编"并获得基本思想,从一个指令集切换到另一个指令集相对简单.
我建议从80386汇编开始 - 几乎所有可以找到的PC都支持它,但没有太多的扩展来混淆刚开始的人.
你应该学习什么类型的?这取决于你想用它做什么.您是否有兴趣了解有关PC的更多信息?你对嵌入式编程感兴趣吗?确保你有一些执行代码的方法.您可能想学习x86系列,但这并不是最容易学习的.回想起来,我认为最容易学习的是Radio Shack Color Computer和他们出售的手册.
最常见的取决于你想做什么.在通用计算机中有很多基于x86的芯片,但更多的芯片在更专业的角色,如智能手机和嵌入式系统.
通过学习世界上的每种汇编语言,你不了解汇编.你知道这一点,通过充分了解一两个来获得所有重要的想法,之后它主要是一种学习新计算机架构的方式.