x86_64 汇编
简介
这是一份关于 x86_64 汇编的学习笔记。
一些关于汇编怎样写的资料:
- Intel® 64 and IA-32 Architectures Software Developer Manuals
- AMD64 Architecture Programmer’s Manual
- NASM 文档
除了写汇编代码,我们还需要了解汇编与其他编程语言如何协同工作,这就涉及到 ABI (Application Binary Interface),Windows 和 Linux 有不同的 ABI 规范:
Windows ABI 的文档比较分散,一方面原因是微软并不鼓励在 Windows 下采用汇编语言编制程序,另一方面是 ABI 包含的内容太多,全都分散在在 C / C++ 文档、MSVC 编译器文档的各个角落。 不过微软还是系统地提供了一些关于调用约定等方面的文档:
再比如,像结构体对齐方式、Windows PE 文件格式规范等都是 Windows ABI 的一部分:
Linux ABI 规范被称作 System V Application Binary Interface,分为 i386 版本和 AMD64 版本,其相关资料可以在 Linux Foundation Referenced Specifications 找到。