📄 retmacro.s
字号:
;/***************************************************************************
; Copyright ARM Limited 1998 - 2000. All rights reserved.
;****************************************************************************
;
; Generic aliases for RETURN to allow ARM/THUMB interworking
;
; $Id: retmacro.s,v 1.1.1.1 2006/04/18 07:34:53 ivan Exp $
;
;****************************************************************************/
IF :LNOT: :DEF: __retmacros
__retmacros EQU 1
;standard return command with Thumb aware alternative
MACRO
RETURN $reg
IF :DEF: THUMB_AWARE ; if interworking is required
BX $reg ; return and change state if required
ELSE ; not Thumb aware
MOV pc, $reg ; just return
ENDIF
MEND
;Conditional return - NOTE: return register must be lr
MACRO
RETURN_COND $cond
IF :DEF: THUMB_AWARE ; if interworking is required
BX$cond lr ; return and change state if required
ELSE ; not Thumb aware
MOV$cond pc, lr ; just return
ENDIF
MEND
;Conditional return to register _other_ than lr
MACRO
RETURN_COND_EXTEND $cond, $reg
IF :DEF: THUMB_AWARE ; if interworking is required
BX$cond $reg ; return and change state if required
ELSE ; not Thumb aware
MOV$cond pc, $reg ; just return
ENDIF
MEND
; Return with a linear list of registers popped from the stack
MACRO
POP_RETURN $rlist
IF :DEF: THUMB_AWARE ; if interworking is required
LDMFD sp!, {$rlist, lr} ; restore registers
BX lr ; return and change state if required
ELSE ; not Thumb aware
LDMFD sp!, {$rlist, pc} ; restore registers
ENDIF
MEND
; Return with a _2_ linear lists of registers popped from the stack
MACRO
POP_RETURN_EXTEND $rlist1, $rlist2
IF :DEF: THUMB_AWARE ; if interworking is required
LDMFD sp!, {$rlist1, $rlist2, lr} ; restore registers
BX lr ; & return
ELSE ; not Thumb aware
LDMFD sp!, {$rlist1, $rlist2, pc} ; restore registers & return
ENDIF
MEND
ENDIF
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -