这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 请问如此初始化堆栈有何意义

共2条 1/1 1 跳转至

请问如此初始化堆栈有何意义

院士
2006-09-17 18:14:16     打赏
请问如此初始化堆栈有何意义



关键词: 请问     如此     初始化     堆栈     有何     意义    

院士
2006-12-22 22:43:00     打赏
2楼
问 EasyARM2104学习开发板上,有一段C 语言引导代码,其中初始化堆栈如下:
InitStack    
        MOV     R0, LR

;设置管理模式堆栈
        MSR     CPSR_c, #0xd3
        LDR     SP, StackSvc
;设置中断模式堆栈
        MSR     CPSR_c, #0xd2
        LDR     SP, StackIrq
;设置快速中断模式堆栈
        MSR     CPSR_c, #0xd1
        LDR     SP, StackFiq
;设置中止模式堆栈
        MSR     CPSR_c, #0xd7
        LDR     SP, StackAbt
;设置未定义模式堆栈
        MSR     CPSR_c, #0xdb
        LDR     SP, StackUnd
;设置系统模式堆栈
        MSR     CPSR_c, #0xdf
        LDR     SP, StackUsr

        MOV     PC, R0

那么这样运行InitStack 后,不是和没有运行是一样的吗,CPSR_c 和 SP 最后的值分别是0xdf和StackUsr,  那前面的赋值不是没有一点作用吗? 1: ARM有几种处理器模式每一种的堆栈是不同的
建议看看ARM的处理器结构 2: 关于不同模式栈顶的初始化 MSR     CPSR_c, #0xxx 用于切换处理器的模式(每种模式有各自独立的SP寄存器,互不相关),用MSR切换到那种模式后,再把各种不同模式的初始栈顶值写入各自的SP中(LDR     SP, StackXXX的作用)。

3: 我明白了,谢谢,是没有仔细看书

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]