主要观点:作者最初学的编程语言是 ActionScript,后对高级“网络语言”感兴趣,觉得低级语言可怕,尤其机器码。但最终决定克服这一障碍,发现机器码并不可怕,还介绍了机器码的基本概念,包括指令、寄存器、内存,以 ARM 64 位和 x86 - 64 为例,说明了不同架构下机器码的特点及编码方式等,强调学习机器码虽有其他需了解的内容,但从基础开始能有很大收获。
关键信息:
- 作者最初学 ActionScript,后对高级语言感兴趣,觉得低级语言可怕。
- 机器码有不同架构,如 ARM 64 位和 x86 - 64 。
- 机器码基本概念:指令是运行代码(32 位数字,编码操作和操作数据)、寄存器存储值(AArch64 有 31 个通用寄存器)、内存像数组可存储值(如 STR 指令存储值到内存地址加偏移)。
- x86 - 64 编码不同,有 REX 前缀(用于 64 位操作的寄存器扩展前缀)、ModR/M(表示模式和寄存器等)、Opcode(简单的数字)等部分。
重要细节: - ARM 指令示例 add immediate 及各字段含义。
- x86 - 64 中各部分的具体作用及编码方式,如移动 32 位 signed immediate 到 64 位寄存器的编码。
- 提到还有其他需学习内容,如各种标志、调用约定、堆栈、跳转等,但已介绍基本概念。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。