📄 osal.s51
字号:
// 137 pSrc = src;
MOV R1,?V0 + 0
MOV R2,?V0 + 1
MOV R3,A
// 138 pDst = dst;
MOV DPL,R6
MOV DPH,R7
SJMP ??osal_memcpy_0
// 139
// 140 while ( len-- )
// 141 *pDst++ = *pSrc++;
??osal_memcpy_1:
LCALL ?C_GPTR_LOAD
MOVX @DPTR,A
MOV A,R1
ADD A,#0x1
INC R1
MOV A,R2
ADDC A,#0x0
MOV R2,A
INC DPTR
??osal_memcpy_0:
MOV A,R4
MOV R6,A
MOV A,R5
MOV R7,A
MOV A,#-0x1
ADD A,R6
DEC R4
MOV A,#-0x1
ADDC A,R7
MOV R5,A
MOV A,R6
JNZ ??osal_memcpy_2
MOV A,R7
??osal_memcpy_2:
JNZ ??osal_memcpy_1
// 142
// 143 return ( pDst );
MOV R2,DPL
MOV R3,DPH
CFI EndBlock cfiBlock1
REQUIRE ?Subroutine20
; // Fall through to label ?Subroutine20
// 144 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine20:
CFI Block cfiBlock2 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 11)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
MOV R7,#0x3
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock2
// 145
// 146 /*********************************************************************
// 147 * @fn osal_cpyExtAddr
// 148 *
// 149 * @brief
// 150 *
// 151 * Copy extended addresses. This function will copy 8 bytes.
// 152 *
// 153 * @param dest destination address pointer
// 154 * @param src source address pointer
// 155 *
// 156 * @return dest + Z_EXTADDR_LEN
// 157 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 158 void *osal_cpyExtAddr( void *dest, void *src )
osal_cpyExtAddr:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function osal_cpyExtAddr
// 159 {
FUNCALL osal_cpyExtAddr, osal_memcpy
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
MOV A,#-0xb
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 11)
; Saved register size: 11
; Auto size: 0
// 160 return osal_memcpy( dest, src, Z_EXTADDR_LEN );
; Setup parameters for call to function osal_memcpy
MOV ?V0 + 0,R4
MOV ?V0 + 1,R5
MOV ?V0 + 2,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 14)
MOV R4,#0x8
MOV R5,#0x0
MOV DPTR,#(osal_memcpy & 0xffff)
MOV A,#((osal_memcpy >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 11)
SJMP ?Subroutine20
CFI EndBlock cfiBlock3
// 161 }
// 162
// 163 /*********************************************************************
// 164 * @fn osal_memset
// 165 *
// 166 * @brief
// 167 *
// 168 * Set memory buffer to value.
// 169 *
// 170 * @param dest - pointer to buffer
// 171 * @param value - what to set each byte of the message
// 172 * @param size - how big
// 173 *
// 174 * @return value of next widget, 0 if no widget found
// 175 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 176 void *osal_memset( void *dest, byte value, int len )
osal_memset:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function osal_memset
// 177 {
FUNCALL osal_memset, memset
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
MOV A,#-0xa
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
; Saved register size: 10
; Auto size: 0
// 178 return memset( dest, value, len );
; Setup parameters for call to function memset
MOV ?V0 + 0,R4
MOV ?V0 + 1,R5
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 12)
MOV A,R1
MOV R4,A
MOV R5,#0x0
MOV DPTR,#(memset & 0xffff)
MOV A,#((memset >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 10)
LJMP ?Subroutine21 & 0xFFFF
CFI EndBlock cfiBlock4
// 179 }
// 180
// 181 /*********************************************************************
// 182 * @fn osal_build_uint16
// 183 *
// 184 * @brief
// 185 *
// 186 * Build a uint16 out of 2 bytes (0 then 1).
// 187 *
// 188 * @param swapped - 0 then 1
// 189 *
// 190 * @return uint16
// 191 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 192 uint16 osal_build_uint16( byte *swapped )
osal_build_uint16:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function osal_build_uint16
// 193 {
MOV A,#-0x9
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
// 194 return ( BUILD_UINT16( swapped[0], swapped[1] ) );
MOV DPL,R2
MOV DPH,R3
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
CLR A
ADD A,R4
MOV R2,A
MOV A,R1
ADDC A,#0x0
MOV R3,A
CFI EndBlock cfiBlock5
REQUIRE ?Subroutine23
; // Fall through to label ?Subroutine23
// 195 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine23:
CFI Block cfiBlock6 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
MOV R7,#0x1
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock6
// 196
// 197 /*********************************************************************
// 198 * @fn osal_build_uint32
// 199 *
// 200 * @brief
// 201 *
// 202 * Build a uint32 out of sequential bytes.
// 203 *
// 204 * @param swapped - sequential bytes
// 205 * @param len - number of bytes in the byte array
// 206 *
// 207 * @return uint32
// 208 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 209 uint32 osal_build_uint32( byte *swapped, byte len )
osal_build_uint32:
CFI Block cfiBlock7 Using cfiCommon0
CFI Function osal_build_uint32
// 210 {
MOV A,#-0x10
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
; Saved register size: 16
; Auto size: 0
// 211 if ( len == 2 )
MOV A,#0x2
XRL A,R1
JNZ ??osal_build_uint32_0
// 212 return ( BUILD_UINT32( swapped[0], swapped[1], 0L, 0L ) );
MOV DPL,R2
MOV DPH,R3
LCALL ?Subroutine15 & 0xFFFF
??CrossCallReturnLabel_47:
MOV R0,#?V0 + 4
LCALL ?L_SHL
MOV R0,#?V0 + 0
MOV R1,#?V0 + 4
LCALL ?L_ADD
MOV R2,?V0 + 0
MOV R3,?V0 + 1
MOV R4,?V0 + 2
MOV R5,?V0 + 3
SJMP ??osal_build_uint32_1
// 213 else if ( len == 3 )
??osal_build_uint32_0:
MOV A,#0x3
XRL A,R1
JNZ ??osal_build_uint32_2
// 214 return ( BUILD_UINT32( swapped[0], swapped[1], swapped[2], 0L ) );
MOV DPL,R2
MOV DPH,R3
LCALL ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_6:
LCALL ?L_SHL
MOV R0,#?V0 + 0
MOV R1,#?V0 + 4
LCALL ?L_ADD
LCALL ?Subroutine8 & 0xFFFF
??CrossCallReturnLabel_26:
SJMP ??CrossCallReturnLabel_47
// 215 else if ( len == 4 )
??osal_build_uint32_2:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -