嵌入式爱好者

查看: 5574|回复: 2

ARM 的SP(R3)堆栈指针

[复制链接]

0

主题

0

帖子

0

积分

扫一扫,手机访问本帖
发表于 2011-10-22 12:48:20 | 显示全部楼层 |阅读模式
本帖最后由 潇毅 于 2011-10-24 21:31 编辑
  1. ;在6种模式下切换并设置堆栈指针
  2.     MRS R0,CPSR           ;把CPSR读取到R0
  3.     BIC R0,#0x1f                 ;低5位清零
  4.     LDR R1,=MODE_Fiq ;设置R1 为0b10001
  5.     ORR R0,R0,R1            ;R0和R1相或,设置低5位
  6.     MSR CPSR_c,R0         ;把R0的值重新赋值到CPSR
  7.     LDR SP,=Stact_Fiq

  8.     BIC R0,#0x1f  ;低5位清零
  9.     LDR R1,=MODE_Irq
  10.     ORR R0,R0,R1
  11.     MSR CPSR_c,R0
  12.     LDR SP,=Stact_Irq
  13.    
  14.     BIC R0,#0x1f  ;低5位清零
  15.     LDR R1,=MODE_Svc
  16.     ORR R0,R0,R1
  17.     MSR CPSR_c,R0
  18.     LDR SP,=Stact_Svc
  19.    
  20.     BIC R0,#0x1f  ;低5位清零
  21.     LDR R1,=MODE_Abort
  22.     ORR R0,R0,R1
  23.     MSR CPSR_c,R0
  24.     LDR SP,=Stact_Abort
  25.    
  26.     BIC R0,#0x1f  ;低5位清零
  27.     LDR R1,=MODE_Undef
  28.     ORR R0,R0,R1
  29.     MSR CPSR_c,R0
  30.     LDR SP,=Stact_Undef
  31.    
  32.     BIC R0,#0x1f  ;低5位清零
  33.     LDR R1,=MODE_Sys
  34.     ORR R0,R0,R1
  35.     MSR CPSR_c,R0
  36.     LDR SP,=Stact_Sys
复制代码
CPU是怎样判别几种模式下的SP的分类的?
如上面的
  1. ;  BIC R0,#0x1f  ;低5位清零
  2.     LDR R1,=MODE_Sys
  3.     ORR R0,R0,R1
  4.     MSR CPSR_c,R0
  5.     LDR SP,=Stact_Sys
复制代码
它是怎样知道sp_sys而不是sp_fiq、sp_irq等。
系统默认的SP是那种模式下的?
还请高手指点?
回复

使用道具 举报

0

主题

0

帖子

0

积分

 楼主| 发表于 2011-10-24 21:24:19 | 显示全部楼层
本帖最后由 潇毅 于 2011-10-24 21:38 编辑

自己顶起,只求版主给点建设性的建议,谢谢了:)

0

主题

0

帖子

0

积分

 楼主| 发表于 2011-10-31 13:31:27 | 显示全部楼层
回复 2# 潇毅


    顶啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2025-1-10 23:51

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表