layout: post title: 汇编总结 date: 2019-06-27 18:32:24.000000000 +09:00 categories:html
tags:git
本文首发于 我的博客github
汇编语言的种类
- 8086汇编(16bit)
- x86汇编(32bit)
- x64汇编(64bit)
- ARM汇编(嵌入式、移动设备) p......
x8六、x64汇编根据编译器的不一样,有2种书写格式
- Intel:Windows派系
- AT&T :Unix派系
做为iOS开发工程师,最主要的汇编语言是
- AT&T汇编 -> iOS模拟器
- ARM汇编 -> iOS真机设备
常见的汇编指令
项目 |
AT&T |
Intel |
说明 |
寄存器命名 |
%rax |
rax |
|
操做数顺序 |
movq %rax, %rdx |
mov rdx, rax |
将rax的值赋值给rdx |
常数\当即数 |
movq $0x10, %rax |
mov rax, 0x10 |
将0x10赋值给rax |
内存赋值 |
movq $0xa, 0x1ff7(%rip) |
mov qword ptr [rip+0x1ff7], 0xa |
将0xa赋值给地址为rip + 0x1ff7的内存空间 |
取内存地址 |
leaq -0x18(%rbp), %rax |
lea rax, [rbp – 0x18] |
将rbp – 0x18这个地址值赋值给rax |
jmp指令 |
jmp *%rdx |
jmp rdx |
call和jmp写法相似 |
操做数长度 |
leaw 0x10(%dx), %ax |
lea ax, [dx + 0x10] |
|
操做数长度的说明
- b = byte (8-bit)
- s = short (16-bit integer or 32-bit floating point)
- w = word (16-bit)
- l = long (32-bit integer or 64-bit floating point)
- q = quad (64 bit) t = ten bytes (80-bit floating point)
寄存器
有16个经常使用寄存器
- rax、rbx、rcx 、rdx、rsi、rdi、rbp、rsp
- r八、r九、r十、r十一、r十二、r1三、r1四、r15
寄存器的具体用途
- rax常做为函数返回值使用
- rdi、rsi、rdx、rcx、r八、r9等寄存器经常使用于存放函数参数
- rsp、rbp用于栈操做
- rip做为指令指针
- 存储着CPU下一条要执行的指令的地址
- 一旦CPU读取一条指令,rip会自动指向下一条指令(存储下一条指令的地址)
lldb经常使用指令
- 读取寄存器的值
- register read/格式
- register read/x
- 修改寄存器的值
- register write 寄存器名称 数值
- register write rax 0
- 读取内存中的值
- x/数量-格式-字节大小 内存地址
- x/3xw 0x0000010
- 修改内存中的值
- memory write 内存地址 数值
- memory write 0x0000010 10
- 格式
- 字节大小
- b – byte 1字节
- h – half word 2字节
- w – word 4字节
- g – giant word 8字节
- expression 表达式
- 能够简写:expr 表达式
- expression $rax
- expression $rax = 1
- po 表达式
- print 表达式
lldb经常使用指令
- thread step-over、next、n
- 单步运⾏行行,把子函数当作总体⼀一步执⾏行行(源码级别)
- thread step-in、step、s
- 单步运⾏行行,遇到子函数会进⼊入子函数(源码级别)
- thread step-inst-over、nexti、ni
- 单步运⾏行行,把子函数当作总体⼀一步执⾏行行(汇编级别)
- thread step-inst、stepi、si
- 单步运⾏行行,遇到子函数会进⼊入子函数(汇编级别)
- thread step-out、finish
- 直接执⾏行行完当前函数的全部代码,返回到上一个函数(遇到断点会卡住)
规律
- 内存地址格式为:0x4bdc(%rip),通常是全局变量,全局区(数据段)
- 内存地址格式为:-0x78(%rbp),通常是局部变量,栈空间
- 内存地址格式为:0x10(%rax),通常是堆空间
参考资料:express
从入门到精通Swift编程编程
更多资料,欢迎关注我的公众号函数