【发布时间】:2010-10-17 19:41:21
【问题描述】:
我没有汇编编程的先验知识,但想学习如何在 Linux 平台上编写 x86 汇编代码。但是,我很难找到自学的好资源。
组装艺术这本书看起来不错,但它教 HLA。我对必须学习一种方式,然后重新学习它不感兴趣。 RISC 架构似乎也有更好的汇编资源,但不幸的是我没有 RISC 处理器可以学习。有人有什么建议吗?
【问题讨论】:
我没有汇编编程的先验知识,但想学习如何在 Linux 平台上编写 x86 汇编代码。但是,我很难找到自学的好资源。
组装艺术这本书看起来不错,但它教 HLA。我对必须学习一种方式,然后重新学习它不感兴趣。 RISC 架构似乎也有更好的汇编资源,但不幸的是我没有 RISC 处理器可以学习。有人有什么建议吗?
【问题讨论】:
http://asm.sf.net 有一些关于 x86 以外的架构的资料。
如果您对 RISC 架构感兴趣,您可以在Qemu 上运行 Linux。 Qemu 模拟了几种 RISC 架构,如 PowerPC、ARM 和 MIPS。你或许能找到一个现成的Qemu硬盘镜像here。
另一种试验 RISC 架构的方法是使用 gdb 的内置模拟器。
【讨论】:
我发现Assembly language step-by-step 是一个非常好的资源。它的背面也有一个针对 Linux 程序集的部分。
【讨论】:
可能没有比The Art of Assembly Language Programming 和该网站上的其他资源更好的了。
【讨论】:
学习汇编级编程实际上有两个部分:基本概念,然后是具体架构。如果您没有接触过 asm 编程,我强烈建议您首先使用简单的小型架构来了解基础知识,即使它可能并不直接适用于任何实际硬件。如果很多人都指向某个特定资源,例如“...的艺术”,请再看一遍,用它来了解架构是什么,如何使用基本工具(asm、调试器、disasm 等)。
一旦解决了这些问题,您就可以开始研究更高级的指令集。 x86 架构和指令集非常复杂,有许多晦涩难懂的方法可以让您绞尽脑汁——在解决之前先学习一些简单的东西。
【讨论】:
尽管我在学校认识的很多人都讨厌这本书,但我还是会把它链接起来:
http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010
我使用这本书的主要原因是因为它在 Linux 上使用带有 GNU 汇编器的 x86。最后一点很有帮助,因为我不得不在我们学校的实验室中使用那个汇编器,如果你不知道 - 语法与英特尔语法不同。
另外,我想补充一点,学习如何将高级语言编译成汇编语言确实帮助我继续前进。
【讨论】:
x86 汇编确实是一种 intel 语言,最好使用 intel 芯片和执行 DOS 的 windows 平台学习
如果你有 WinXP 之类的东西,曾经有一个 DOS 解释器,它向用户展示 asm 的基础知识,并允许用户实时反转命令并调整代码,然后将代码组装成一个块在解释器上运行
它被称为“Ketman Interpreter”
它仅适用于 DOS asm,但它非常独特,因为它可以让您看到所有寄存器和标志发生了什么,并允许完全无知的人掌握逻辑
【讨论】:
试试http://www.emu8086.com,它是一个带有汇编器和调试器的 Windows 托管 8086 仿真器。它带有一个教程。
【讨论】:
我从一本关于 8086 的书中学习了 x86 汇编程序(我现在不记得它的名字了......它显然很老,而且是紫色的。如果你真的感兴趣,我可以在我的时候挖掘它回家)。那只会教你 16 位的东西,对于更高级的 32 位东西,我在网上阅读了一些教程。我从来没有做过64位。至少一开始,您所针对的操作系统可能并不重要,因为您的级别太低了……BIOS 是您真正关心的全部。如果您无法访问测试系统,仿真器可能是一个不错的选择,正如其他人所提到的,但您也可以自己构建一个 8088 或 8086,而不会因离散部件而产生太多麻烦。您可以轻松地在线找到教程和电路图。它的成本应该低于 50 美元,而且是一次很棒的学习体验——您实际上是在从头开始构建主板。
如果您不太喜欢 x86 汇编并想学习 RISC,我推荐Microchip PIC 微控制器。您可以花不到 50 美元购买一个入门工具包(我拥有的 PICKit 1 甚至可以在 Linux 下工作)。他们有大量的文档和大量针对业余爱好者的第三方教程。
【讨论】:
【讨论】:
汇编语言编程的艺术
【讨论】: