ARM處理器的工作模式 (二)
實(shí)驗(yàn)二 各工作模式下堆棧初始化實(shí)驗(yàn)(ARM9)(工程exp9,文件exp9_2_1.s)
本實(shí)驗(yàn)實(shí)現(xiàn)各工作模式下堆棧初始化,采用ARMmulator方式調(diào)試,選用ARM9作為目標(biāo)處理器。
START
MRS R1,CPSR
STOP
INITSTACK
MSR CPSR_c,#0xd1
;定義各個(gè)工作模式下的堆棧長度
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
;定義各工作模式下的堆??臻g
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.
序號 | 執(zhí)行指令 | 指令執(zhí)行后的變化情況 | |||||||||
寄存器&存儲空間 | 工作模式 | ||||||||||
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
實(shí)驗(yàn)思考題:
1.
2.
評論