51 lines
721 B
ArmAsm
51 lines
721 B
ArmAsm
|
||
|
||
|
||
|
||
|
||
AREA |.text|, CODE, READONLY, ALIGN=2
|
||
THUMB
|
||
REQUIRE8
|
||
PRESERVE8
|
||
|
||
;指针调用会使用LDR指令,通过解析这个指令使用的寄存器
|
||
;可以从这个寄存器得到类的基地址
|
||
;在调用这个函数之前,调用者会压栈,此时LR已经不是之前的值
|
||
;所以只能解析PHSH指令,找到栈中存储的LR值
|
||
__self_pointer PROC
|
||
EXPORT __self_pointer
|
||
MOV R0,LR
|
||
LDRH R0,[R0,#-2]
|
||
BX LR
|
||
ENDP
|
||
|
||
|
||
__interrupt_disable PROC
|
||
EXPORT __interrupt_disable
|
||
MRS r0, PRIMASK
|
||
CPSID I
|
||
BX LR
|
||
ENDP
|
||
|
||
__interrupt_enable PROC
|
||
EXPORT __interrupt_enable
|
||
MSR PRIMASK, r0
|
||
BX LR
|
||
ENDP
|
||
|
||
__set_msp PROC
|
||
EXPORT __set_msp
|
||
MSR msp, r0
|
||
BX lr
|
||
ENDP
|
||
|
||
|
||
|
||
ALIGN 4
|
||
|
||
END
|
||
|
||
|
||
|
||
|