Armv8-A ISA

 1. 特权模式       

         Armv8-A 指令集包含四类特权模式和两种状态,如图1-1。四类特权模式分别为EL0,EL1, EL2, EL3。EL0是最低特权模式,通常运行应用程序。EL3是最高的特权模式,通常运行secure monitor等需要最高特权模式的程序,CPU上电复位时,会从EL3模式开始执行。EL1和EL2通常运行OS Kernel 和Hypervisor。两种状态分别是Non-secure 和Secure ,它们之间的切换需要通过EL3模式进行CPU状态的设定。

c52cb8465b8b494484af66bfe95b39c5.jpeg

图1-1

2. 通用寄存器  

         Armv8-A有31个64位通用寄存器(X0 - X30),如图2.1。其中,X30是link register,负责记录程序跳转时的返回地址。

a3b094c73b954966a311efcea6b7f20e.png

 

 

 3. ARM ABI(Application Binary Interface)

      ARM ABI对于通用寄存器的使用规则如下:

  1. 寄存器X0 - X7用于参数传递和函数返回值。
  2. 寄存器X9 - X15,为调用方保存。
  3. 寄存器X19 - X28,为被调用方保存。
  4. 寄存器X8,X16 - X18,X29, X30为特殊功能寄存器。

527c3ca26a46427a880859bb4b7e1680.png

 

    ARM ABI对于浮点寄存器的使用规则如下:

  1. 寄存器V0-V7用于参数传递和函数返回值。
  2. 寄存器V8-V15为被调用方保存。
  3. 寄存器V16-V31为调用方保存。

bf525692094e4b71b87ad80b06377eb9.png

 

总结:

        Armv8-A是一套新的64bit指令集架构。其定义四种特权等级,每种等级拥有各自的特权和用途。通过ARM ABI规定的通用寄存器和浮点寄存器的使用规则,能够有效的完成C/C++与汇编函数的相互调用。

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值