ARM64汇编

作者: Coder_LRT | 来源:发表于2018-09-12 10:30 被阅读83次

一般来说学习汇编可以从寄存器、指令、堆栈 入手,下面我们慢慢学习:

生成汇编文件:

xcrun --sdk iphoneos clang -S -arch arm64 main.c -o main.s

寄存器

1. 通用寄存器:

    64bit􏰋􏰌的:x0 ~ x28

    32bit的:w0 - w28

    x0 - x7通常用来存放函数的参数,更多的参数使用堆栈来传递

    x0通常拿来存放函数的返回值

2. 程序计数器:

    pc (Program Counter)

    记录CPU当前指令的是哪一条指令

    存储着当前CPU正在执行的指令的地址

􏰤􏰥􏰦􏰗􏰈3. 堆栈指针

    sp (Stack Pointer)

    fp (Frame Pointer) ,也就是x29

4. 链接寄存器

    lr (Link Register),也就是x30

    存储着函数的返回地址

5. 程序状态寄存器

  cpsr  (Current Program Status Register)

  spsr  (Saved Program Status Register),异常状态下使用

指令

mov

ret

    ret是函数返回指令

     将lr (x30) 寄存器的值赋给pc寄存器

add

sub

cmp

    cmp是将2个寄存器相减

    相减的结果会影响cpsr寄存器的标志位

b

    b是跳转指令

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

bl

    bl是带返回的跳转指令

    执行的操作:将下一条指令的地址存储到lr (x30) 寄存器中,

    跳转到标记处开始执行代码

条件域

    EQ: equal,相等

    NE: not equal , 不相等

    GT: great than, 大于

    GE: great equal,大于等于

    LT: less than,小于

    LE: less equal,小于等于

内存操作

    load,从内存中读取数据

    ldr 、ldur 、dp

    store,往内存中写入数据

    str、stur、stp、零寄存器,里面存储的值是0(wzr、xzr)

函数的堆栈

函数的类型:

    叶子函数

    非叶子函数

相关文章

  • ARM64汇编入门 - 汇编基础

    ARM64汇编入门 - 汇编基础ARM64汇编入门 - 汇编基础

  • ARM64汇编学习笔记一(初始汇编)

    ARM64汇编学习笔记一(初始汇编)

  • IOS arm64常用的汇编

    导论 生成汇编文件 寄存器 arm64 汇编条件域 arm64 汇编指令 总结 1. 生成汇编文件 2. 寄存器 ...

  • ARM 64 常见汇编指令

    ARM64常用的汇编指令 运算指令 程序跳转指令

  • iOS逆向

    ARM64汇编1、汇编初探[https://www.jianshu.com/p/f3ae7cef6659]2、函数...

  • arm64汇编基础

    iOS汇编 真机:arm64汇编 模拟器:x86汇编 将c语言的代码转化成汇编: 1. 寄存器 lldb查看当前a...

  • iOS汇编基础(二)寄存器

    以arm64为例 xcode调试汇编 1. xcode 查看运行时的汇编代码 debug -> debug wor...

  • ARM64 学习

    iOS汇编 真机 arm64汇编,GNU 模拟器 x86, AT&T 汇编 寄存器 指令 堆栈 通用寄存器 64b...

  • ARM 汇编学习记录

    1. 简介 根据 CPU 架构不同,汇编主要可以分为两种:模拟器上的x86 汇编、真机上的 arm64 汇编,主要...

  • 入门二

    [转]ARM64 汇编 寄存器 汇编指令栈栗子 逆向工程绕不过的一部分就是汇编指令的分析。我们iPhone里面用到...

网友评论

    本文标题:ARM64汇编

    本文链接:https://www.haomeiwen.com/subject/msnmgftx.html