美文网首页初见
iOS arm64常用汇编

iOS arm64常用汇编

作者: 下班买鸡蛋 | 来源:发表于2020-05-22 15:17 被阅读0次

1.寄存器

通用寄存器

   (1)64bit: x0-x28

   (2)32bit:w0-w28(属于x0-x28低32bit)

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

   (4)x0通常作为函数返回值

程序计数器

pc(Program Counter)    

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

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

类似于8086汇编的ip寄存器

堆栈指针

链接寄存器

lr(Link Register), 也就是x30

存储着函数的返回地址

程序状态寄存器

cpsr(current program status register)

2.指令

    (1)ret:返回

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

    (2)mov:全称move,把后面内容的移动到前面寄存器

        mov x0, #0x8

    (3)add:将后面x0+x1,赋给x2

        mov x0, #0x1

        mov x1, #0x2

        add x2,  x0, x1

    (4)sub:将后面x0-x1,赋给第x2

        mov x0, #0x5

        mov x1, #0x2

        sub x2,  x0, x1

    (5)cmp:比较指令,x0 - x1,并根据结果设置CPSR的标志位

        mov x0, #0x3

        mov x1, #0x1

        cmp x0, x1

    (6)b:跳转指令,b直接跳转到mycode对应的地址

        b(条件) 目标地址

        b mycode

        mov x0, #0x5

        mycode:

        mov x1, #0x6

    (7) bl:带返回的跳转指令

         bl(条件) 目标地址 (类似函数调用)

        执行的操作:(1)将下一条指令的地址存储到lr(x30)寄存器中(2)跳转到标记处,执行代码

    (8)ldr:从内存中读取数据

        ldr x0, [x1]     ;(x1里面存的是地址 取出一定大小的数据  数据大小取决于x0的大小)

        ldr x0, [x1, #0x4]  (取x1中存的地址  加上立即数0x4  , 最终地址中的数据  赋给x0)

        ldr x0, [x1, #0x4]!    ;(同上  多了一个 x1中的地址值  等于最终地址值)

    (9)ldur:去内存中的数据放到寄存器

        ldur x0, [x1, #-0x4]        ;立即数为负

    (10)ldp:从内存中读取数据,放到一对寄存器中(p是pair的简称,一对的意思)

        ldp w0, w1, [x1, #0x4]    

    (11)str:往内存中写入数据

        str w0,[x1, #0x4]      ;把w0寄存器中的数据放到x1内存中        

        stur w0, [x1, #-0x4]

        stp w0, w1, [x1, #0x4]

    (12)条件域(跟在指令后并没有空格):bl:带返回的跳转指令

        EQ:equal,相等

        NE:not equal, 不相等

        GT:great than, 大于

        GE:great or equal, 大于等于

        LT:less than, 小于

        LE:less or equal, 小宇等于

        beq mycode(找CPSR中Z位 1就跳, 不是1 就不跳,也就是之前结果为0就跳) 

    (13)内存操作

3.堆栈

相关文章

  • ARM 64 常见汇编指令

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

  • ARM64汇编入门 - 汇编基础

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

  • iOS arm64常用汇编

    1.寄存器 通用寄存器 (1)64bit: x0-x28 (2)32bit:w0-w28(属于x0-x28低3...

  • IOS arm64常用的汇编

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

  • arm64汇编基础

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

  • ARM64 学习

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

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

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

  • 汇编

    iOS汇编 arm64,x86,armv7 生成汇编文件 寄存器 通用寄存器64bit:x0-x2832bit:w...

  • iOS arm64汇编

    想要学习arm64汇编,需要从以下三个方面入手,寄存器、指令和堆栈。 不同的CPU,寄存器的个数和结构不相同。像8...

  • iOS之ARM64汇编

    iOS的程序都是跑在ARM架构的机器上,所以iOS的汇编用到的就是ARM汇编 对于iOS开发汇编的分类: x86汇...

网友评论

    本文标题:iOS arm64常用汇编

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