Contents

汇编学习

什么是汇编?

汇编学习

学习材料

Princeton大学汇编教程

这个pdf做的非常浅显易懂

tcoline.com-汇编语言

tcoline.com-汇编语言

这个网站的教程也不错,纯中文

w3c教程

https://www.w3cschool.cn/assembly/

函数调用原理

https://gitbook.coder.cat/function-call-principle/

学习记录

目录

  • 编程语言级别:c语言->汇编语言->机器语言
  • x86-64汇编介绍
  • 冯诺伊曼架构介绍
    • 主存
    • 寄存器
  • 汇编函数调用过程

主存

0000000000000000
...
TEXT
RODATA
DATA
BSS
HEAP
STACK
...
FFFFFFFFFFFFFFFF

备注

Data Registers

  • RAX: register accumulator // R"注册"意思
  • RBX:register base
  • RCX:register count
  • RDX:register data

Data Registers item detail

  • RAX: register accumulator // R"register" x “extended” [0,63]
  • EAX: extended accumulator // E “extended|enhanced” [0,31]
  • AX: accumulator // [0,15]
  • AH :accumulator higher // [8,15]
  • AL :accumulator lower // [0,7]

cont.

  • RSI: register source index (source for data copies)
  • RDI: register destination index (destination for data copies)
  • RBP: register base pointer (start of stack)
  • RSP: register stack pointer (current location in stack, growing downwards)

Pointer Registers

  • IP:Instruction Pointer // 要执行的下一条指令的偏移地址
  • SP:Stack Pointer // 供程序堆栈内的偏移值
  • BP:Base Pointer // 主要有助于引用传递给子程序的参数变量

Index Registers

  • SI:Source Index //字符串操作的源索引
  • DI:Destination Index // 字符串操作的目标索引

Control Registers - common flag bits

  • OF:Overflow Flag
  • DF:Direction Flag
  • IF:Interrupt Flag
  • TF:Trap Flag
  • SF:Sign Flag
  • ZF:Zero Flag
  • AF:Auxiliary Carry Flag
  • PF:Parity Flag
  • CF:Carry Flag

参考来源

工具

Compiler Explorer

Compiler Explorer可以在线将go代码转为asm