iOS汇编基础

1,020 阅读1分钟

汇编语法的发展:

1.机器语言

由0和1组成

2.汇编语言

汇编语言分类

  1. 8086汇编(16bit)每个寄存器存放2个字节
  2. x86汇编(32bit)每个寄存器存放4个字节
  3. x64汇编(64bit)每个寄存器存放8个字节
  4. 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