一.基础
- 汇编语言的种类:
- 8086汇编:16bit
- x86汇编:32bit
- x64汇编:64bit
- ARM汇编:嵌入式和移动设备
- 汇编语言的书写格式
- Inter:Windows派系
- AT&T:UNIX派系
- IOS开发主要的汇编语言是
- AT&T汇编 -> mac上的IOS模拟器上的
- ARM汇编 -> 手机实机
- 基础语法:
- 寄存器命名:%rax
- 操作数顺序: movq -0x18%rax,%rdx ->将地址为rax - 0x18中的值赋值给rdx
- 常数:movq $0xa,0x1ff7(%rip) ->将0xa复制给地址为0x1ff7(%rip) 的内存空间
- 取内存地址:leaq -0x18%rax,%rdx ->将地址]rax - 0x18赋值给rdx
- jmp和call:jmp后接一个地址,会跳转到那个地址继续往下执行。而call后面一般接的是一个函数的地址,并且和ret(return)配合使用,在函数中遇到ret后,会回到源代码中call的下一条语句继续执行。
- 间接跳转在jmp和call后面加上*%和寄存器名字。
- 操作数长度:
- b = 8bit
- s = 整数16或者浮点数32
- w = 16
- l = 整数32或浮点64
- q = 64
- t = 80
- 寄存器长度
- rax一共64位,他的一半叫eax有32位,再拿一半叫ax有16位,这16位的高八位叫ah,低8位叫al