Notes for Machine-Level Programming.
汇编基础
计算机设计
指令集架构(ISA)
为编写机器/汇编代码而需要理解的处理器设计部分
如:指令集规范、寄存器Intel: x86, IA32, Itanium, x86-64
ARM: 广泛应用于移动设备
RISC V: 一种全新的开源ISA微架构
指令集架构的具体实现
如:缓存的大小、核心频率
汇编/机器代码
CPU计算模型
汇编:数据类型
- 1、2、4、8字节的整数(作为数值或地址)
- 4、8、10字节的浮点数
- 代码:一系列指令构成的字节序列
- 没有复合类型如数组、结构体
x86-64寄存器 IA32寄存器 汇编:操作
- 在寄存器与内存间转移数据(双向)
- 在寄存器或内存数据上执行算术操作
- 转移控制(无条件跳转进入过程、条件分支、间接分支)
- 简单内存地址模式
mov_ src dest
movq、movl、movw、movb分别操作8、4、2、1个字节
(R): Mem[Reg[R]], movq (%rcx), %rax
D(R): Mem[Reg[R]+D], movq 8(%rcx), %rax - 完全内存地址模式
lea_ src dest
leaq、leal、leaw、leab分别操作8、4、2、1个字节
D(Rb,Ri,S): Mem[Reg[Rb]+S*Reg[Ri]+D], leaq 8(%rdi,%rdi,2), %rax - 其他指令