📄 swi_vec.lst
字号:
AA MACRO ASSEMBLER SWI_VEC 19/02/05 10:29:38 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
00000000 10 AREA ?C?SWI, CODE, READONLY, ALIGN=2
11
12 PUBLIC SWI_Handler?A, ?SWI?Table, ?SWI?Empty
13
14 SWI_Handler?A PROC CODE32
00000000 E92D4000 15 STMFD SP!,{LR} ; Store LR register
00000004 E14F8000 16 MRS R8,SPSR
00000008 E3180020 17 TST R8,#0x20 ; SWI call from
0000000C 115E80B2 18 LDRNEH R8,[LR,#-2] ; Thumb: Load halfword instruction
00000010 120880FF 19 ANDNE R8,R8,#0xFF ; extract SWI number
00000014 051E8004 20 LDREQ R8,[LR,#-4] ; ARM: Load word instruction
00000018 03C884FF 21 BICEQ R8,R8,#0xFF000000 ; extract SWI number
22 ; R4 now contains SWI number
23 ; SWI Handler
24 ; LDR R12,[PC,#(?SWI?Table-$-8)] ; Maximum number of interrupts
25 ; LDR R12,[PC,#0x24] ; Maximum number of interrupts
0000001C E28FC020 26 ADR R12,?SWI?Table
00000020 E59CC000 27 LDR R12,[R12] ; load last SWI-Function-number
28
00000024 E158000C 29 CMP R8,R12
00000028 CA000004 30 BGT ?SWI?Empty ; overflow
0000002C E28FC014 31 ADR R12,?SWI?Table+4
00000030 E79CC108 32 LDR R12,[R12,R8,LSL #2]; SWI function address
00000034 E1A0E00F 33 MOV LR,PC ; Return address
00000038 E12FFF1C 34 BX R12 ; Call SWI function
35
0000003C E8FD8000 36 LDMFD SP!,{PC}^ ; Return
37
00000040 38 ?SWI?Empty:
00000040 EAFFFFFE 39 B $ ; no existing SWI
40
41 ; *** DO NOT MODIFY THIS PORTION OF THE FILE ***
00000044 42 ?SWI?Table: ; Marker for LA Linker
43 ;
44 ; The LA Linker inserts at this label
45 ; DD 0 ; <last SWI function number>
46 ; DD ?SWI?Empty ; <entry for SWI function 0>
47 ; DD <SWI entry 1>
48 ; DD <SWI entry 2>
49 ; DD :
50 ; For non-existing SWI functions DD ?SWI?Empty is inserted
51
52 ENDP
53
54 END
AA MACRO ASSEMBLER SWI_VEC 19/02/05 10:29:38 PAGE 2
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C?SWI . . . . . . C SEG 0044H REL=UNIT, ALN=BYTE
?SWI?Empty . . . . C ADDR 0040H R SEG=?C?SWI
?SWI?Table . . . . C ADDR 0044H 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 + -