首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >汇编语言类型

汇编语言类型
EN

Stack Overflow用户
提问于 2013-12-19 14:22:06
回答 2查看 504关注 0票数 0

我期待着学习一门汇编语言。

我搜索了这个教程,发现了不同的汇编语法的不同教程。

8086汇编程序、nasm和gcc有什么不同吗?

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

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-19 15:07:26

基本上,x86芯片组有两种口味,一种是AT&T,另一种是Intel。我认识的大多数人更喜欢Intel语法,因为它更容易理解,但当然,这也是一个习惯的问题。当我在6510或M68000上学习程序集时,我发现AT&T语法更紧密地相关,它与它的进退模式( IMO )相当混乱。

如果您指示gcc编写程序集源文件,它默认使用AT&T语法,但也可以使用

代码语言:javascript
复制
gcc -S -masm=intel test.c

nasm是一个汇编程序,gcc是一个编译器,所以他们有着完全不同的目的。

至于学习程序集,有很多教程,例如集会艺术。但是如果你真的想学习它,最好的方法是启动debug并输入一些指令,看看它们正在做什么,以及它们如何改变reigster和标志,首先编写小循环。

这样,您就可以专注于指令,而不是与汇编程序源代码语法斗争。

票数 1
EN

Stack Overflow用户

发布于 2013-12-19 15:05:31

我不会从x86开始,即使你有硬件,也不是一个很好的第一指令集。ARM、msp430、avr和其他一些都更好,并且有开放源码模拟器,在这里您可以获得更好的可视性。我会从小开始,简单地加或加几个数字,写一个内存位置,把它读回来,如果那样的话。模拟器(可以)防止您需要进行系统调用来“查看”您的结果,同样,它们也可以帮助您在挂起和崩溃中工作,这是您将得到的,而IMO将导致您放弃整个工作。一旦你知道了更多,你就可以切换到硬件或者尝试另一个指令集(每个新的指令集比以前的指令集容易得多),如果到那时你仍然觉得有一个x86,我建议你回到早期,找到一个8088/86模拟器,学习原来的指令集,然后如果你仍然感觉到需要,然后跳到80386和更新。您还需要能够在头脑中切换格式,使用AT&T的gnu是一个主要的罪过(gnu汇编程序经常犯BTW,这几乎是预料的),但不幸的是,我们现在有这两种相互竞争的格式。在实践中,您应该能够很容易地知道在代码检查中使用的是什么格式,但是思想上的来回切换仍然是一个挑战。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20684116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档