美文网首页
arm64汇编简单笔记

arm64汇编简单笔记

作者: DevHuangjb | 来源:发表于2019-04-02 16:50 被阅读0次

    学汇编最主要的是要搞懂:寄存器,指令和堆栈三个方面。

    iPhone5S后,苹果都采用ARM64架构。

    本文主要介绍ARM64汇编寄存器和常用指令集。

    寄存器

    ARM64架构中共有34个寄存器,包括31个通用寄存器、SP、PC、CPSR。

    • R0-R30通用寄存器

      每个寄存器最多可以存取一个64位大小的数。以x0-x30形式使用时是64位的,以w0-w30形式使用时是32位的。

      其中,R0-R7作为函数的参数,R0保存函数的返回值

      其中,R8寄存器用来保存子程序的返回值

      其中,R29又称FP寄存器(frame point),主要用来保存栈帧(栈底)指针;

      其中,R30又称LR寄存器(link register),主要用来保存函数返回地址

    • SP:栈顶指针

    • PC:类似于8086汇编中的IP寄存器,用来记录当前执行的指令地址

    • CPSR:状态寄存器,用来标记运算各种标记

    指令集

    • MOV 指令

      mov x0, x1:把寄存器r1的值赋给寄存器r0

      mov w0, #0x1122:把0x1122写进r1的低16位

      movk w0, #0x3344, lsl #16:0x3344作为w0的16-32位值

    • ADD 加法指令

      ADD{条件}{S} 目的寄存器,操作数 1,操作数 2;指令用于把两个操作数相加,并将结果存放到目的寄存器中

      ADD x0,x1,x2: x0 = x1 + x2
      ADD x0,x1,#256:x0 = x1 + 256
      ADD x0,x2,x3,LSL#1:x0 = x2 + x3<<1

    • SUB 减法指令

      SUB{条件}{S} 目的寄存器,操作数 1,操作数 2

    • AND 逻辑与指令

      AND{条件}{S} 目的寄存器,操作数 1,操作数 2

    • ORR 逻辑或指令

      ORR{条件}{S} 目的寄存器,操作数 1,操作数 2

    • EOR 逻辑异或指令

      ORR{条件}{S} 目的寄存器,操作数 1,操作数 2

    • LDR 存储器到寄存器的数据传输指令

      LDR{条件} 目的寄存器,<存储器地址>

    • STR 寄存器到存储器的数据传输指令

      STR{条件} 源寄存器,<存储器地址>

    • LDP 存储器连续读两个单元到两个寄存器

      LDP 寄存器1, 寄存器2,<存储器地址>

    • STP 把两个寄存器的值连续放在某个内存地址后

      STP 寄存器1, 寄存器2,<存储器地址>

    • CMP 比较指令

      CMP{条件} 操作数 1,操作数 2

      CMP 指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行比较,同时更新 CPSR 中

      条件标志位的值。该指令进行一次减法运算,但不存储结果,只更改条件标志位。标志位表示的是 操作数 1 与操作数 2 的关系(大、小、相等) 。

    • B 跳转指令

      把要跳转的指令地址赋给PC寄存器

    • BL带返回地址的跳转指令

      把要跳转的指令地址赋给PC寄存器,同时把下一个指令地址(返回地址)赋给LR寄存器

    • RET 子程序退出返回指令

    在后面学习中有遇到其他指令会更新

    相关文章

      网友评论

          本文标题:arm64汇编简单笔记

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