我之前没有汇编编程的知识,想在Linux平台上学习如何编写x86汇编代码。然而,我很难找到一个好的资源来自学。
《汇编语言艺术》这本书看起来不错,但它教授HLA。我不想学一种方式,然后再重新学习。另外,似乎RISC架构有更好的汇编资源,但不幸的是,我没有RISC处理器可以学习。有人有什么建议吗?
http://asm.sf.net网站上提供了除x86以外的其他体系结构相关材料。
如果您对RISC架构感兴趣,可以在Qemu上运行Linux。Qemu模拟多种RISC架构,例如PowerPC、ARM和MIPS。你可能能够在这里找到一个现成的Qemu硬盘映像。
另一种尝试RISC架构的方法是使用gdb的内置模拟器。
我发现汇编语言逐步学是一份非常好的资源。它还有一节专门针对Linux汇编。
可能没有比汇编语言编程艺术和该网站上的其他资源更好的了。
x86汇编语言是英特尔的一种语言,最好使用英特尔芯片和Windows平台进行学习,该平台具有DOS功能。
如果您拥有类似WinXP的东西,那么曾经有一个DOS解释器,它向用户展示了汇编语言的基础知识,并允许用户在实时反转命令并调整代码,然后将代码组装成一个块,在解释器上运行。
它被称为“Ketman解释器”。
它仅适用于DOS汇编语言,但非常独特,因为它可以让您看到所有寄存器和标志发生的情况,并允许完全不了解的个人掌握逻辑。
尽管我认识的很多学校里的人都讨厌这本书,但我还是会分享它:
http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010
我使用这本书的主要原因是它在Linux上使用x86和GNU汇编器。最后一点很有帮助,因为我必须在我们学校的实验室中使用该汇编器,如果你不知道 - 语法与Intel语法不同。试试http://www.emu8086.com,它是一个带有汇编器和调试器的Windows 8086仿真器。它还附带教程。
我从一本关于8086的书中学习了x86汇编语言(目前无法记住它的名称......显然相当古老,而且是紫色的。如果你真的感兴趣,我可以在回家后找到它)。这只会教你16位内容,对于更高级的32位内容,我在网上阅读了一些教程。我从未做过64位。至少起初,你定位的操作系统可能并不重要,因为你处于太低的层次... BIOS才是你真正关心的。如果没有测试系统,模拟器可能是一个很好的选择,正如其他人所提到的,但你也可以从离散部件中轻松构建一个8088或8086。你可以轻松在网上找到教程和电路图。它的成本应该不到50美元,而且这是一个很好的学习经验——你基本上是从头开始构建一个主板。
如果你对x86汇编语言没有太大兴趣,想学习RISC,我推荐使用Microchip PIC微控制器。你可以花不到50美元买到入门套件(我有PICKit 1,甚至在Linux下工作)。他们有广泛的文档和大量针对业余爱好者的第三方教程。