汇编学习
Contents
什么是汇编?
汇编学习
学习材料
Princeton大学汇编教程
这个pdf做的非常浅显易懂
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
参考来源
- x86/amd64 指令索引
- X86-64 架构指南
- X86 64 Register and Instruction Quick Start
- https://www.tutorialspoint.com/assembly_programming/assembly_registers.htm
工具
Compiler Explorer
Compiler Explorer可以在线将go代码转为asm