潇毅 发表于 2011-10-22 12:48:20

ARM 的SP(R3)堆栈指针

本帖最后由 潇毅 于 2011-10-24 21:31 编辑

;在6种模式下切换并设置堆栈指针
    MRS R0,CPSR         ;把CPSR读取到R0
    BIC R0,#0x1f               ;低5位清零
    LDR R1,=MODE_Fiq ;设置R1 为0b10001
    ORR R0,R0,R1            ;R0和R1相或,设置低5位
    MSR CPSR_c,R0         ;把R0的值重新赋值到CPSR
    LDR SP,=Stact_Fiq

    BIC R0,#0x1f;低5位清零
    LDR R1,=MODE_Irq
    ORR R0,R0,R1
    MSR CPSR_c,R0
    LDR SP,=Stact_Irq
   
    BIC R0,#0x1f;低5位清零
    LDR R1,=MODE_Svc
    ORR R0,R0,R1
    MSR CPSR_c,R0
    LDR SP,=Stact_Svc
   
    BIC R0,#0x1f;低5位清零
    LDR R1,=MODE_Abort
    ORR R0,R0,R1
    MSR CPSR_c,R0
    LDR SP,=Stact_Abort
   
    BIC R0,#0x1f;低5位清零
    LDR R1,=MODE_Undef
    ORR R0,R0,R1
    MSR CPSR_c,R0
    LDR SP,=Stact_Undef
   
    BIC R0,#0x1f;低5位清零
    LDR R1,=MODE_Sys
    ORR R0,R0,R1
    MSR CPSR_c,R0
    LDR SP,=Stact_SysCPU是怎样判别几种模式下的SP的分类的?
如上面的;BIC R0,#0x1f;低5位清零
    LDR R1,=MODE_Sys
    ORR R0,R0,R1
    MSR CPSR_c,R0
    LDR SP,=Stact_Sys它是怎样知道sp_sys而不是sp_fiq、sp_irq等。
系统默认的SP是那种模式下的?
还请高手指点?

潇毅 发表于 2011-10-24 21:24:19

本帖最后由 潇毅 于 2011-10-24 21:38 编辑

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

潇毅 发表于 2011-10-31 13:31:27

回复 2# 潇毅


    顶啊
页: [1]
查看完整版本: ARM 的SP(R3)堆栈指针