在Linux平台上学习x86汇编语言的最佳方法是什么?

24

我之前没有汇编编程的知识,想在Linux平台上学习如何编写x86汇编代码。然而,我很难找到一个好的资源来自学。

《汇编语言艺术》这本书看起来不错,但它教授HLA。我不想学一种方式,然后再重新学习。另外,似乎RISC架构有更好的汇编资源,但不幸的是,我没有RISC处理器可以学习。有人有什么建议吗?

10个回答

11

http://asm.sf.net网站上提供了除x86以外的其他体系结构相关材料。

如果您对RISC架构感兴趣,可以在Qemu上运行Linux。Qemu模拟多种RISC架构,例如PowerPC、ARM和MIPS。你可能能够在这里找到一个现成的Qemu硬盘映像。

另一种尝试RISC架构的方法是使用gdb的内置模拟器。


9

1
+1,作者正在编写新版。他最近写道:“我现在已经完成了13章中的2/3;已经写了113,000个单词,大约是175,000个单词的一半。它必须在6月30日之前完成。”请访问http://www.contrapositivediary.com/获取更新。 - dwc

3

2
好的,但是如果我不能使用HLA,学习它有什么意义呢? - user87630
1
为什么你不能使用它呢?免费下载。无论如何,本书将介绍常规指令集,包括您如何编写HLA宏提供的结构。 - Charlie Martin
5
我开始阅读这本书,但发现它很难理解,而且 HLA 阻碍了我的理解。这有点像通过学习葡萄牙语来学习西班牙语。有没有一些好的书可以教授使用 FASM? - Gary Willoughby
1
我可以实际使用HLA来调试x86架构上的程序吗? - user87630
1
@unknown - 你可以利用你所掌握的汇编知识来调试程序。但说实话,有更好的方法来调试你的代码。 - Chris Lutz
1
@Gary - FASM不是我会使用的汇编器。我会选择NASM,因为它可以在更多的架构上工作。当然,我有偏见,因为我甚至不能在OS X上使用FASM。此外,FASM比NASM新,文档相对较少。使用NASM,您至少有文档可以学习。 - Chris Lutz

2
学习汇编语言编程有两个主要方面:基础概念和具体架构。如果您没有接触过汇编语言编程,强烈建议您先通过一个简单、小型的架构来掌握基础知识,即使它可能与任何真实硬件没有直接关联。如果许多人都指向像“The Art of...”这样的特定资源,请再看一眼,利用它来学习什么是架构,如何使用基本工具(汇编语言、调试器、反汇编等)。
一旦掌握了这些基础知识,就可以开始研究更高级的指令集。x86架构和指令集非常复杂,有许多晦涩的技术需要理解 - 在尝试这些之前应该先学习一些简单的东西。

1

x86汇编语言是英特尔的一种语言,最好使用英特尔芯片和Windows平台进行学习,该平台具有DOS功能。

如果您拥有类似WinXP的东西,那么曾经有一个DOS解释器,它向用户展示了汇编语言的基础知识,并允许用户在实时反转命令并调整代码,然后将代码组装成一个块,在解释器上运行。

它被称为“Ketman解释器”。

它仅适用于DOS汇编语言,但非常独特,因为它可以让您看到所有寄存器和标志发生的情况,并允许完全不了解的个人掌握逻辑。


1

尽管我认识的很多学校里的人都讨厌这本书,但我还是会分享它:

http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010

我使用这本书的主要原因是它在Linux上使用x86和GNU汇编器。最后一点很有帮助,因为我必须在我们学校的实验室中使用该汇编器,如果你不知道 - 语法与Intel语法不同。
另外,我想补充的是,学习高级语言如何编译成汇编语言真的帮助我进步了很多。

0

试试http://www.emu8086.com,它是一个带有汇编器和调试器的Windows 8086仿真器。它还附带教程。


3
那意味着需要运行Windows,这是一个很大的牺牲要求。 - Charlie Martin
1
@CharlieMartin:“运行Windows”“巨大的牺牲”让我发笑。长命Linux和Unix! - NlightNFotis

0

我从一本关于8086的书中学习了x86汇编语言(目前无法记住它的名称......显然相当古老,而且是紫色的。如果你真的感兴趣,我可以在回家后找到它)。这只会教你16位内容,对于更高级的32位内容,我在网上阅读了一些教程。我从未做过64位。至少起初,你定位的操作系统可能并不重要,因为你处于太低的层次... BIOS才是你真正关心的。如果没有测试系统,模拟器可能是一个很好的选择,正如其他人所提到的,但你也可以从离散部件中轻松构建一个8088或8086。你可以轻松在网上找到教程和电路图。它的成本应该不到50美元,而且这是一个很好的学习经验——你基本上是从头开始构建一个主板。

如果你对x86汇编语言没有太大兴趣,想学习RISC,我推荐使用Microchip PIC微控制器。你可以花不到50美元买到入门套件(我有PICKit 1,甚至在Linux下工作)。他们有广泛的文档和大量针对业余爱好者的第三方教程。


这个入门套件听起来很有趣。我可能会研究一下。谢谢。 - user87630

0

-3
汇编语言编程的艺术

3
你读了问题吗?还是答案? - Michael Myers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接