0%

CSAPP 03 - Machine-Level Programming

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
    • 其他指令

C -> 汇编码 -> 机器码