ARMv8之arm64架构汇编知识

本文详细解读了ARM64架构中的寄存器类型(通用、向量和特殊),函数调用约定,以及常用的汇编指令,包括mov、add、sub等,展示了如何在实际编程中操作寄存器和处理数据。

1. 寄存器

1.1. 通用寄存器

    31R0~R30,每一个寄存器能够存取一个64位大小的数。 当使用 x0~x30访问时,是一个 64位的数;当使用 w0~w30访问时,是一个 32 位的数,访问的是寄存器的低32位,如下图所示:


1.2. 向量寄存器

(也可以叫做浮点寄存器)每一个寄存器的大小是 128 位的。 分别能够用Bn、Hn、Sn、Dn、Qn的方式来访问不一样的位数。如下图:

  • Bn: 一个 Byte的大小,即 8 位
  • Hn: half word,即 16 位
  • Sn: single word,即 32 位
  • Dn: double word,即 64 位
  • Qn: quad word,即128 位

1.3. 特殊寄存器

  • sp: (Stack Pointer),栈顶寄存器,用于保存栈顶地址;
  • fp(x29): (Frame Pointer)为栈基址寄存,用于保存栈底地址;
  • lr(x30): (Link Register) ,保存调用跳转指令 bl 指令的下一条指令的内存地址;
  • zr(x31): (Zero Register),xzr/wzr分别表明 64/32 位,其做用就是 0,写进去表明丢弃结果,读出来是 0
  • pc: 保存将要执行的指令的地址(有操做系统决定其值,不能改写)。

1.4. 状态寄存器

    CPSR (Current Program Status Register)和其余寄存器不同,其余寄存器是用来存放数据的,都是整个寄存器具备一个含义;而 CPSR 寄存器是按位起做用的,即,每一位都有专门的含义,记录特定的信息;以下图数据结构

  • CPSR 的 低8位(包括 IFT 和 M[4:0]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值