armv8 特殊寄存器 栈指针sp
阅读数:282 评论数: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)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序
一、概述
1、目前常用的arm汇编环境有以下两种:
(1)arm asm: arm公司的汇编器,适合于windows平台下使用。
(2)gnu arm asm:gnu交叉编译工具链中的汇编器,适合于l
一、armv8概述
ARM架构版本号从1-8,ARMv8架构支持以下两种执行状态:
1、aarch64
(1)提供31个64位通用寄存器(其中x30被用来做链接寄存器LR(函数返回地址)),一个64位
全称Prefetch from memory。
1、PLD = prefetch for load
2、PST = prefetch for store
3、L1表示一级缓存,L2表示二级存,L3表示