找回密码
 注册
搜索
查看: 672|回复: 0

[ARM资料] 求教:关于DCD和SPACE伪指令

[复制链接]
发表于 2008-1-15 19:48:03 | 显示全部楼层 |阅读模式
USR_STACK_LEGTH  EQU  64
SVC_STACK_LEGTH  EQU  0
FIQ_STACK_LEGTH  EQU  16
IRQ_STACK_LEGTH  EQU  64
ABT_STACK_LEGTH  EQU  0
UND_STACK_LEGTH  EQU  0
  AREA  Example7,CODE,READONLY
  ENTRY
  CODE32
  
START MOV  R0,#0
  MOV  R1,#1
  MOV  R2,#2
  MOV  R3,#3
  MOV  R4,#4
  MOV  R5,#5
  MOV  R6,#6
  MOV  R7,#7
  MOV  R8,#8
  MOV  R9,#9
  MOV  R10,#10
  MOV  R11,#11
  MOV  R12,#12
  
  BL  InitStack
  
  MRS  R0,CPSR
  BIC  R0,R0,#0x80
  MSR  CPSR_cxsf,R0
  
  MSR  CPSR_c,#0xd0
  MRS  R0,CPSR
  
  MSR  CPSR_c,#0xdf
  MRS  R0,CPSR
  
HALT B  HALT

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
  
  
StackUsr DCD  UsrStackSpace+(USR_STACK_LEGTH-1)*4
StackSvc DCD  SvcStackSpace+(SVC_STACK_LEGTH-1)*4
StackIrq DCD  IrqStackSpace+(IRQ_STACK_LEGTH-1)*4
StackFiq DCD  FiqStackSpace+(FIQ_STACK_LEGTH-1)*4
StackAbt DCD  AbtStackSpace+(ABT_STACK_LEGTH-1)*4
StackUnd DCD  UndStackSpace+(UND_STACK_LEGTH-1)*4

  AREA MyStack,DATA,NOINIT,ALIGN=2
  
UsrStackSpace SPACE USR_STACK_LEGTH*4
SvcStackSpace SPACE SVC_STACK_LEGTH*4
IrqStackSpace SPACE IRQ_STACK_LEGTH*4
FiqStackSpace SPACE FIQ_STACK_LEGTH*4
AbtStackSpace SPACE ABT_STACK_LEGTH*4
UndStackSpace SPACE UND_STACK_LEGTH*4
  END
各位大哥大姐们,请教教小弟:各个模式下堆栈的起始地址的计算和后面几句伪指令的计算,小弟不胜感激!!!
[em03]
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-7 15:24 , Processed in 0.045781 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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