armv8 特殊寄存器 栈指针sp

阅读数:133 评论数:0

跳转到新版页面

分类

硬件/嵌入式

正文

默认情况下,发生异常时会选择目标异常级别的SP_ELn作为栈指针。例如,当触发到EL1的异常时,就会选择SP_EL1作为栈指针。每个异常级别都有自己的栈指针,SP_EL0、SP_EL1、SP_EL2和SP_EL3。

当AArch64处于EL0以外的异常级别时,处理器可以使用与该异常级别相关联的一个专用的64位栈指针(SP_ELn)与EL0关联的栈指针(SP_EL0)。

如上图所示,t后缀表示选择了SP_EL0栈指针,h表示选择了SP_ELn栈指针。

虽然大多数指令都无法使用SP寄存器。但是有一些形式的算术指令可以操作SP,例如,ADD指令可以读
写当前的栈指针以调整函数中的栈指针。例如:

ADD SP, SP, #0x10 // Adjust SP to be 0x10 bytes before its current value



相关推荐

当异常发生时,(cpsr)当前程序状态寄存器中的处理器状态将保存在相关的程序状态保存寄存器中(spsr),spsr保存着异常发生之前pstate的值,用于在异常返回时恢复(pstate)处理器状态的值

一、BSP(Board Support Package) 板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序

作用是把pc寄存器和立即数按照一定的规则计算后赋值给寄存器。  

stp指令是str的变种指令,p可以理解成pair的意思,可以同时操作两个寄存器。 例如 stp x2

一、概述 1、目前常用的arm汇编环境有以下两种: (1)arm asm: arm公司的汇编器,适合于windows平台下使用。 (2)gnu arm asm:gnu交叉编译工具链中的汇编器,适合于l

Move to Register from Status Register 用于将程序状态寄存器内容传输到通用寄存器。  

一、armv8概述 ARM架构版本号从1-8,ARMv8架构支持以下两种执行状态: 1、aarch64 (1)提供31个64位通用寄存器(其中x30被用来做链接寄存器LR(函数返回地址)),一个64位

一、概述 1、LSL=Logic Shift Left 2、LSR=Logic Shift Right 3、ASL=Arithmatic Shift

一、概述 Condition execution是根据运行结果更新Conidtion flags,来判断Condition code是否可以执行。 通过给汇编指令

全称Prefetch from memory。 1、PLD = prefetch for load 2、PST = prefetch for store 3、L1表示一级缓存,L2表示二级存,L3表示