当前位置: 代码迷 >> 综合 >> ARMv8/armv7/linux的栈/sp的学习和总结
  详细解决方案

ARMv8/armv7/linux的栈/sp的学习和总结

热度:49   发布时间:2024-03-06 18:56:20.0

1、ARMV8 ARMV7的SP寄存器的介绍

(1)、ARMV7-aarch32的SP寄存器

在ARMV8-aarch32的状态下,有以下SP寄存器

  • sp
  • sp_usr
  • sp_svc
  • sp_abt
  • sp_und
  • sp_irq
  • sp_fiq
  • sp_mon
  • sp_hyp

注意:在armv7上,arm有七种模式:user、system、supervisor、abort、undefined、irq、fiq, 再加两个扩展模式:hyp、monitor

(2)、ARMV8-aarch32的SP寄存器

ASRMV8为了与armv7兼容,在ARMV8-aarch32的状态下,SP寄存器同armv7的一致

  • sp
  • sp_usr
  • sp_svc
  • sp_abt
  • sp_und
  • sp_irq
  • sp_fiq
  • sp_mon
  • sp_hyp

其实armv8的aarch32的这些寄存器,map到了Xx通用寄存器上:
在这里插入图片描述

(3)、ARMV8-aarch64的SP寄存器

在ARMV8-aarch64的状态下,有以下SP寄存器

  • SP_EL0 //当PSTATE.SP=0(SPSel.SP == 0),高的级别访问的sp就是sp_el0
  • SP_EL1 //在EL1级别下使用
  • SP_EL2 //在EL2级别下使用
  • SP_EL3 //在EL3级别下使用