📄 swi_vec.lst
字号:
AA MACRO ASSEMBLER RSWI_VEC 16/05/06 14:55:44 PAGE 1
MACRO ASSEMBLER AA V2.50
OBJECT MODULE PLACED IN SWI_VEC.OBJ
ASSEMBLER INVOKED BY: C:\Keil\ARM\BIN\AA.exe SWI_VEC.S BROWSE DEBUG EP
LOC OBJ LINE SOURCE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
00000000 15 AREA ?C?SWI, CODE, READONLY, ALIGN=2
16
17 PUBLIC SWI_Handler?A, ?SWI?Table, ?SWI?Empty
18
19 SWI_Handler?A PROC CODE32
00000000 E92D5108 20 STMFD SP!,{R3,R8,R12,LR} ; Store R3,R8,R12,LR register
00000004 E14F8000 21 MRS R8,SPSR ; 将SPSR放入R8中
00000008 E92D0100 22 STMFD SP!,{R8} ; 将R8压栈
0000000C E3180020 23 TST R8,#0x20 ; SWI call from
00000010 115E80B2 24 LDRNEH R8,[LR,#-2] ; Thumb: Load halfword instruction
00000014 120880FF 25 ANDNE R8,R8,#0xFF ; extract SWI number
00000018 051E8004 26 LDREQ R8,[LR,#-4] ; ARM: Load word instruction
0000001C 03C884FF 27 BICEQ R8,R8,#0xFF000000 ; extract SWI number
28 ; R4 now contains SWI number
29 ; SWI Handler
30 ; LDR R12,[PC,#(?SWI?Table-$-8)] ; Maximum number of interrupts
31 ; LDR R12,[PC,#0x24] ; Maximum number of interrupts
00000020 E28FC028 32 ADR R12,?SWI?Table
00000024 E59CC000 33 LDR R12,[R12] ; load last SWI-Function-number
34
00000028 E158000C 35 CMP R8,R12
0000002C CA000006 36 BGT ?SWI?Empty ; overflow
00000030 E28FC01C 37 ADR R12,?SWI?Table+4
00000034 E79CC108 38 LDR R12,[R12,R8,LSL #2]; SWI function address
00000038 E1A0E00F 39 MOV LR,PC ; Return address
0000003C E12FFF1C 40 BX R12 ; Call SWI function
41
00000040 E8BD0100 42 LDMFD SP!,{R8} ;R8出栈
00000044 E16FF008 43 MSR SPSR_fsxc,R8 ;设置SPSR寄存器
00000048 E8FD9108 44 LDMFD SP!,{R3,R8,R12,PC}^ ; Return
45
0000004C 46 ?SWI?Empty:
0000004C EAFFFFFE 47 B $ ; no existing SWI
48
49 ; *** DO NOT MODIFY THIS PORTION OF THE FILE ***
00000050 50 ?SWI?Table: ; Marker for LA Linker
51 ;
52 ; The LA Linker inserts at this label
53 ; DD 0 ; <last SWI function number>
54 ; DD ?SWI?Empty ; <entry for SWI function 0>
55 ; DD <SWI entry 1>
56 ; DD <SWI entry 2>
57 ; DD :
58 ; For non-existing SWI functions DD ?SWI?Empty is inserted
AA MACRO ASSEMBLER RSWI_VEC 16/05/06 14:55:44 PAGE 2
59
60 ENDP
61
62 END
AA MACRO ASSEMBLER RSWI_VEC 16/05/06 14:55:44 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 + -