2013-12-19 54 views
0

我期待学习汇编语言。汇编语言的类型

我在网上搜索了教程,发现了不同的组装语法不同的教程。

8086 assembler,nasm和gcc有什么区别?

用汇编语言学习代码的更好方法是什么?

谢谢。

回答

1

基本上x86芯片组有两种风格,分别是AT&TIntel snytax。我认识的大多数人更喜欢英特尔语法,因为它更容易理解,但当然这也是习惯的问题。当我在6510或M68000上学习汇编时,发现AT & T语法更紧密相关,因此它在地址模式IMO中相当混乱。

如果指示的gcc写的组件的资源文件,它使用AT默认& T语法,但你可以切换到英特尔使用

gcc -S -masm=intel test.c 

nasm以及是一个汇编和gcc是一个编译器,使他们有不同的目的。

至于学习大会有很多的教程,例如The Art of Assembly。但是如果你真的想学习它,IMO最好的办法是开始debug并输入一些指令,看看他们在做什么以及他们如何改变reigsters和flags,先写小循环。

通过这种方式,您可以专注于指令,而不会与汇编源语法争执。

0

我不会从x86开始,即使您有硬件,也不是一个好的第一个指令集。 ARM,msp430,avr和其他一些更好,并有开源模拟器,您可以获得更好的可视性。我会从小处着手,简单地添加或添加几个数字,写一个内存位置,读回它,如果是这样的话。模拟器(可以)阻止你需要进行系统调用以“看到”你的结果,同样他们也可以帮助你处理挂起和崩溃,你会得到什么,以及哪些IMO导致放弃整个事情。一旦你知道了更多,你可以切换到硬件或尝试另一个指令集(每个新指令集比前一个指数更容易)导致x86,如果你仍然觉得有需要......在x86中,我建议回到早期,找到一个8088/86模拟器,学习原始指令集,然后如果你仍然觉得需要,那么跳到80386和更新。你也需要能够在头脑中转换格式,使用AT & T是一个基本的罪恶(gnu汇编人员经常犯这些罪恶,这是几乎预料中的),但不幸的是我们现在有这两种竞争格式。通过练习,您应该能够轻松地知道在检查代码时使用了哪种格式,但是精神上来回切换可能仍然是一个挑战。