有很多关于汇编的书。但是,它们通常处理我不关心的ISA,例如MIPS或ARM。我不处理这些架构;我没有理由尝试学习它们。
但是x86汇编书籍似乎...不存在。
假设例如,我正在尝试构建一个玩具编译器,以生成Windows Portable可执行文件。
是否有一本书是事实上的标准,用于描述有关x86组装的最佳实践,设计方法和其他有用信息?那本书使它与众不同吗?
有很多关于汇编的书。但是,它们通常处理我不关心的ISA,例如MIPS或ARM。我不处理这些架构;我没有理由尝试学习它们。
但是x86汇编书籍似乎...不存在。
假设例如,我正在尝试构建一个玩具编译器,以生成Windows Portable可执行文件。
是否有一本书是事实上的标准,用于描述有关x86组装的最佳实践,设计方法和其他有用信息?那本书使它与众不同吗?
Answers:
我上大学时曾将x86处理器的汇编语言用作教科书,发现它很容易理解。我有较旧的第四版,并将其与第六版进行了比较,并且没有发现太大的变化,因此您可能可以廉价地购买到较旧的副本。人们抱怨他将自己的库用于I / O,但他在后面的章节中告诉您如何“硬”地进行操作。
显而易见的去处是英特尔的网站,您可以在其中找到编程和下载参考手册,其中包含有关x86架构的所有知识。
汇编程序设计的艺术是一个很好的资源,它对x86编程有很多了解。
x64 ABI文档也很有用。我试图找到指向AMD网站上该版本的链接,但似乎找不到了,因此我想必须这样做。
可以在学习中提供很多帮助的东西,而不是尝试从头开始在汇编中编写完整的应用程序,而不是用C(或其他任何编译语言)编写大部分应用程序,然后从中调用大量汇编代码那。完成此操作后,将其反转,编写一个汇编程序,然后从中调用一些C函数。
编辑:修正了一个错字。
奔腾处理器优化工具是一本学习x86汇编的很好的书。尽管本书的主要重点是汇编代码的优化,但它一路教授Pentium汇编,也是一本很好的参考书。
它早已绝版,但并不难找到使用的产品。
它带有一个包含“汇编代码优化器”的软盘。它实际上并没有优化您的代码,而是产生一条注释列表,指出诸如流水线停滞之类的低效率所在。
本书随附的工具是作者公司以前销售的功能更强大的产品的限定版,但是由于我不熟悉的原因,它们早已停业。我不知道为什么-我认为这样的工具会像烤饼一样卖。
通常,x86是一个非常复杂的主题,因为不同型号的微处理器支持许多变体。了解了基础知识后,您将需要查阅Intel或AMD的数据手册以获取目标芯片。不幸的是,在一种型号的CPU上快速运行的代码在另一块芯片上的运行速度可能不一样。
为什么不尝试Wikibook- http://en.wikibooks.org/wiki/X86_Assembly。它为汇编语言提供了良好的入门介绍。
关于汇编的难点是要意识到它的简单性,而您需要保持这种简单性。