📄 swi_vec.lst
字号:
AA MACRO ASSEMBLER SWI_VEC 22/12/07 19:56:45 PAGE 1
MACRO ASSEMBLER AA V2.00
OBJECT MODULE PLACED IN SWI_VEC.OBJ
ASSEMBLER INVOKED BY: C:\Keil\ARM\BIN\AA.exe SWI_VEC.S DEBUG EP
LOC OBJ LINE SOURCE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
00000000 35 AREA ?C?SWI, CODE, READONLY, ALIGN=2
36
37 PUBLIC SWI_Handler?A, ?SWI?Table, ?SWI?Empty
38
39 SWI_Handler?A PROC CODE32
00000000 E92D5108 40 STMFD SP!,{R3,R8,R12,LR} ; Store R3,R8,R12,LR register
00000004 E14F8000 41 MRS R8,SPSR ; 将SPSR放入R8中
00000008 E92D0100 42 STMFD SP!,{R8} ; 将R8压栈
0000000C E3180020 43 TST R8,#0x20 ; SWI call from
00000010 115E80B2 44 LDRNEH R8,[LR,#-2] ; Thumb: Load halfword instruction
00000014 120880FF 45 ANDNE R8,R8,#0xFF ; extract SWI number
00000018 051E8004 46 LDREQ R8,[LR,#-4] ; ARM: Load word instruction
0000001C 03C884FF 47 BICEQ R8,R8,#0xFF000000 ; extract SWI number
48 ; R4 now contains SWI number
49 ; SWI Handler
50 ; LDR R12,[PC,#(?SWI?Table-$-8)] ; Maximum number of interrupts
51 ; LDR R12,[PC,#0x24] ; Maximum number of interrupts
00000020 E28FC028 52 ADR R12,?SWI?Table
00000024 E59CC000 53 LDR R12,[R12] ; load last SWI-Function-number
54
00000028 E158000C 55 CMP R8,R12
0000002C CA000006 56 BGT ?SWI?Empty ; overflow
00000030 E28FC01C 57 ADR R12,?SWI?Table+4
00000034 E79CC108 58 LDR R12,[R12,R8,LSL #2]; SWI function address
AA MACRO ASSEMBLER SWI_VEC 22/12/07 19:56:45 PAGE 2
00000038 E1A0E00F 59 MOV LR,PC ; Return address
0000003C E12FFF1C 60 BX R12 ; Call SWI function
61
00000040 E8BD0100 62 LDMFD SP!,{R8} ;R8出栈
00000044 E16FF008 63 MSR SPSR_fsxc,R8 ;设置SPSR寄存器
00000048 E8FD9108 64 LDMFD SP!,{R3,R8,R12,PC}^ ; Return
65
0000004C 66 ?SWI?Empty:
0000004C EAFFFFFE 67 B $ ; no existing SWI
68
69 ; *** DO NOT MODIFY THIS PORTION OF THE FILE ***
00000050 70 ?SWI?Table: ; Marker for LA Linker
71 ;
72 ; The LA Linker inserts at this label
73 ; DD 0 ; <last SWI function number>
74 ; DD ?SWI?Empty ; <entry for SWI function 0>
75 ; DD <SWI entry 1>
76 ; DD <SWI entry 2>
77 ; DD :
78 ; For non-existing SWI functions DD ?SWI?Empty is inserted
79
80 ENDP
81
82 END
AA MACRO ASSEMBLER SWI_VEC 22/12/07 19:56:45 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C?SWI . . . . . . C SEG 0050H REL=UNIT, ALN=BYTE
?SWI?Empty . . . . C ADDR 004CH R SEG=?C?SWI
?SWI?Table . . . . C ADDR 0050H R SEG=?C?SWI
SWI_Handler?A. . . C ADDR 0000H R SEG=?C?SWI
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -