arm汇编学习

ARM64 学习

2020-04-09  本文已影响0人  化二缺

iOS汇编

寄存器 指令 堆栈

通用寄存器
  • x0 - x7 通常拿来存放函数的参数,更多的参数使用堆栈进行传递
  • x0 通常拿来存放函数的返回值
通用寄存器.png
程序计数器
  • 记录cpu 当前指令是那一条指令
  • 相当于存储当前cpu 正在执行的指令地址
  • 类似8086的ip寄存器
堆栈指针
连接寄存器

register read lr 和 register read x30 一样
没有 w30 所以不是一般寄存器
存储着函数的返回地址(函数执行完之后应该返回的地址 并且往下执行)

程序状态寄存器

指令

建议创建OC 工程 比较好操作 swift函数 没有。main函数

1. 创建相应文件.png 2. 汇编文件内容.png 3. 汇编头文件.png 4. main函数文件.png 5. 断点显示.png

新版本的Xcode 不会断在汇编语句上 断在函数上 单步跳进 可以实现

ADD x2 , x4,#0x08 == [ x2 = x4 + #0x08 ]

CMP x1,x2 ==[ x1 减 x2 ,结果影响 cpsr 寄存器 的标志位]

cpsr 寄存器.png cpsr寄存器含义.png

跳转指令 、可以带条件跳转,一般跟cmp配合使用

b指令说明.png 指令的条件域.png

内存操作相关的指令

CPU 寻址方式

  • 立即寻址


    立即寻址.png
  • 寄存器寻址


    寄存器寻址.png
  • 寄存器间接寻址


    寄存器间接寻址 .png
  • 基址变址寻址


    基址变址寻址.png
bl 指令和 b指令的区别

堆栈

  • 叶子函数 (内部不再调用其他函数的函数)
  • 非叶子函数
    1. fp(x29) 和 sp(x30) 之间的空间是函数本身需要的空间
    2. fpsp 都需要重新赋值
    3. 会存储 lr 因为要调用其他函数 执行完要回到原处 往下执行

部分LLDB 指令

image.png
上一篇 下一篇

猜你喜欢

热点阅读