实验二 各工作模式下堆栈初始化实验(ARM9)(工程exp9,文件exp9_2_1.s)
本实验实现各工作模式下堆栈初始化,采用ARMmulator方式调试,选用ARM9作为目标处理器。
START
MRS R1,CPSR
STOP
INITSTACK
MSR CPSR_c,#0xd1
;定义各个工作模式下的堆栈长度
USR_STK_LEN EQU 4
SVC_STK_LEN EQU 4
IRQ_STK_LEN EQU 4
FIQ_STK_LEN EQU 4
ABT_STK_LEN EQU 4
UND_STK_LEN EQU 4
;定义各工作模式下的堆栈指针
P_USR_STK DCDUSR_STK_SPC+(USR_STK_LEN-1)*4
P_SVC_STK DCD SVC_STK_SPC+(SVC_STK_LEN-1)*4
P_IRQ_STK DCD IRQ_STK_SPC+(IRQ_STK_LEN-1)*4
P_FIQ_STK DCD FIQ_STK_SPC+(FIQ_STK_LEN-1)*4
P_ABT_STK DCD ABT_STK_SPC+(ABT_STK_LEN-1)*4
P_UND_STK DCD UND_STK_SPC+(UND_STK_LEN-1)*4
;定义各工作模式下的堆栈空间
USR_STK_SPC SPACE USR_STK_LEN*4
SVC_STK_SPC SPACE SVC_STK_LEN*4
IRQ_STK_SPC SPACE IRQ_STK_LEN*4
FIQ_STK_SPC SPACE FIQ_STK_LEN*4
ABT_STK_SPC SPACE ABT_STK_LEN*4
UND_STK_SPC SPACE UND_STK_LEN*4
1.
2.
3.
序号 | 执行指令 | 指令执行后的变化情况 | |||||||||
|
|
寄存器&存储空间 | 工作模式 | ||||||||
|
|
|
|
|
|
|
|
|
|
|
|
0 | |
|
|
|
|
|
|
|
|
|
|
1 | |
|
|
|
|
|
|
|
|
|
|
2 | |
|
|
|
|
|
|
|
|
|
|
3 | |
|
|
|
|
|
|
|
|
|
|
4 | |
|
|
|
|
|
|
|
|
|
|
5 | |
|
|
|
|
|
|
|
|
|
|
6 | |
|
|
|
|
|
|
|
|
|
|
7 | |
|
|
|
|
|
|
|
|
|
|
8 | |
|
|
|
|
|
|
|
|
|
|
9 | |
|
|
|
|
|
|
|
|
|
|
10 | |
|
|
|
|
|
|
|
|
|
|
11 | |
|
|
|
|
|
|
|
|
|
|
12 | |
|
|
|
|
|
|
|
|
|
|
13 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START
00008004
00008008
0000800c
00008010
00008014
00008018
0000801c
00008020
00008024
STOP
INITSTACK
00008030
00008034
00008038
0000803c
00008040
00008044
00008048
0000804c
00008050
00008054
00008058
0000805c
00008060
00008064
;定义各工作模式下的堆栈指针
P_USR_STK00008068 [0x0000808c]
P_SVC_STK0000806C [0x0000809c]
P_IRQ_STK00008070
P_FIQ_STK00008074
P_ABT_STK00008078 [0x000080cc]
P_UND_STK0000807C
;定义各工作模式下的堆栈空间
USR_STK_SPC00008080
00008084
00008088
0000808c
SVC_STK_SPC00008090
00008094
00008098
0000809c
IRQ_STK_SPC000080a0
000080a4
000080a8
000080ac
FIQ_STK_SPC
000080b4
000080b8
000080bc
ABT_STK_SPC
000080c4
000080c8
000080cc [0x00000000]
UND_STK_SPC
000080d4
000080d8
000080dc
实验思考题:
1.
2.
上一篇:ARM处理器的工作模式(一)
下一篇:ARM异常处理程序
推荐阅读最新更新时间:2024-03-16 14:50