很多年了,
PC端程序员使用
x86汇编来编写高性能的代码。但是32位的
PC已经正在被64位的替代,并且底层的汇编代码也已经改变了。这个是对
x64汇编难得可贵的介绍。阅读该篇文章不需要
x86汇编前置知识,但如果你会它会让你更快更容易的学会
x64汇编。

  
x64是英特尔和
AMD的32位
x86指令集体系结构
ISA的64位扩展的通用名称。
AMD推出了
x64的第一个版本,最初名为
x86-64,后来改名为
AMD64。英特尔将其实现命名为
IA-32e,之后命名为
EMT64。两个版本之间有一些轻微的不兼容,但大多数代码在两个版本上都可以正常工作;有关详细信息,请参阅《Intel®64 and IA-32 Architectures Software Developer’s Manuals》和《AMD64 Architecture Tech Docs》。我们统称之为
x64。请不要把
IA-64
64位Intel® Itanium®体系结构相混淆。

  本篇介绍不会涉及硬件的相关细节,比如缓存、分支预测和其他高级话题。有一些参考将会在本文章末尾处给出来帮助大家以后深入这些领域。

  汇编一般用于白编写应用程序对性能极其苛刻要求的部分,尽管对于大多数开发者来说做到比
C++编译器更好是非常困难的。汇编知识对于调试代码来说十分有用——有时编译器会生成错误的汇编代码或者对在调试器中单步调试代码确认错误原因有更好的帮助。代码优化者们有时候会犯错。当你没有源代码的时候,汇编就可以派上用场,提供修复代码的接口。汇编可以让你改变修改当前已经存在的可执行文件。如果你想知道你所用的编程语言在底层的实现,汇编是必需品。学会它你就可以知道为什么有时候它运行的慢或者为什么其他运行的快。最后一点,汇编代码知识在逆向分析恶意程序是不可或缺的。