汇编语法的发展:
1.机器语言
由0和1组成
2.汇编语言
汇编语言分类
- 8086汇编(16bit)每个寄存器存放2个字节
- x86汇编(32bit)每个寄存器存放4个字节
- x64汇编(64bit)每个寄存器存放8个字节
- ARM汇编(移动设备、嵌入式设备)
现在的x86/x64汇编根据编译器不同分为2种:
- Windows的Intel
- Unix的AT & T
汇编指令-AT&T
操作数长度: q=quad(64)bit l = long(32 or 64)bit w=word(16)bit s = 16bit or 32 bit b = byte(8)bit t = ten bytes (80-bit floating point)
寄存器分类
- rax:r开头寄存器64bit8个字节
- eax:e开头寄存器32bit4个字节
- ax/bx/cx寄存器 16bit2个字节
- ah al bh bl 8bit一个字节
寄存器相关指令
register read rax
register write rax 10
x/4xg 0x00000000 4组16进制8字节 p10
2.1 movq VS leaq
mov指令将rbx-0x10计算结果的数据结果放到rsi寄存器中
lea指令将rbx-0x10计算结果的内存地址放到rsi寄存器
movq -0x10(%rbx),%rsi
leaq -0x10(%rbx),%rsi
2.2 jmp VS callq
汇编默认按照顺序执行
jmp指令一旦跳转执行地址0x100001237永不回头
call指令一旦执行0x100001237后继续之前的指令,和ret配对使用
jmp 0x100001237
callq 0x100001237