📄 retmacro.s.svn-base
字号:
;/***************************************************************************; Copyright ARM Limited 1998 - 2000. All rights reserved.;****************************************************************************;; Generic aliases for RETURN to allow ARM/THUMB interworking;; $Id: retmacro.s,v 1.1 2005/05/26 15:51:47 sp_head 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 + -