⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osal.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
    112            return strlen( pString );
   \   000004                ; Setup parameters for call to function strlen
   \   000004   90....       MOV     DPTR,#(strlen & 0xffff)
   \   000007   74..         MOV     A,#((strlen >> 16) & 0xff)
   \   000009   02....       LJMP    ?Subroutine19 & 0xFFFF
    113          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine19:
   \   000000   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \                     ??Subroutine19_0:
   \   000003   D083         POP     DPH
   \   000005   D082         POP     DPL
   \   000007   02....       LJMP    ?BRET
    114          
    115          /*********************************************************************
    116           * @fn      osal_memcpy
    117           *
    118           * @brief
    119           *
    120           *   Generic memory copy.
    121           *
    122           *   Note: This function differs from the standard memcpy(), since
    123           *         it returns the pointer to the next destination byte. The
    124           *         standard memcpy() returns the original destination address.
    125           *
    126           * @param   dst - destination address
    127           * @param   src - source address
    128           * @param   len - number of bytes to copy
    129           *
    130           * @return  pointer to end of destination buffer
    131           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    132          void *osal_memcpy( void *dst, const void GENERIC *src, unsigned int len )
   \                     osal_memcpy:
    133          {
   \   000000   74F5         MOV     A,#-0xb
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 11
   \   000005                ; Auto size: 0
   \   000005   EA           MOV     A,R2
   \   000006   FE           MOV     R6,A
   \   000007   EB           MOV     A,R3
   \   000008   FF           MOV     R7,A
   \   000009   740B         MOV     A,#0xb
   \   00000B   12....       LCALL   ?XSTACK_DISP0_8
   \   00000E   12....       LCALL   ?Subroutine5 & 0xFFFF
   \                     ??CrossCallReturnLabel_19:
   \   000011   A3           INC     DPTR
   \   000012   E0           MOVX    A,@DPTR
    134            byte *pDst;
    135            const byte GENERIC *pSrc;
    136          
    137            pSrc = src;
   \   000013   A9..         MOV     R1,?V0 + 0
   \   000015   AA..         MOV     R2,?V0 + 1
   \   000017   FB           MOV     R3,A
    138            pDst = dst;
   \   000018   8E82         MOV     DPL,R6
   \   00001A   8F83         MOV     DPH,R7
   \   00001C   800D         SJMP    ??osal_memcpy_0
    139          
    140            while ( len-- )
    141              *pDst++ = *pSrc++;
   \                     ??osal_memcpy_1:
   \   00001E   12....       LCALL   ?C_GPTR_LOAD
   \   000021   F0           MOVX    @DPTR,A
   \   000022   E9           MOV     A,R1
   \   000023   2401         ADD     A,#0x1
   \   000025   09           INC     R1
   \   000026   EA           MOV     A,R2
   \   000027   3400         ADDC    A,#0x0
   \   000029   FA           MOV     R2,A
   \   00002A   A3           INC     DPTR
   \                     ??osal_memcpy_0:
   \   00002B   EC           MOV     A,R4
   \   00002C   FE           MOV     R6,A
   \   00002D   ED           MOV     A,R5
   \   00002E   FF           MOV     R7,A
   \   00002F   74FF         MOV     A,#-0x1
   \   000031   2E           ADD     A,R6
   \   000032   1C           DEC     R4
   \   000033   74FF         MOV     A,#-0x1
   \   000035   3F           ADDC    A,R7
   \   000036   FD           MOV     R5,A
   \   000037   EE           MOV     A,R6
   \   000038   7001         JNZ     ??osal_memcpy_2
   \   00003A   EF           MOV     A,R7
   \                     ??osal_memcpy_2:
   \   00003B   70E1         JNZ     ??osal_memcpy_1
    142          
    143            return ( pDst );
   \   00003D   AA82         MOV     R2,DPL
   \   00003F   AB83         MOV     R3,DPH
   \   000041                REQUIRE ?Subroutine20
   \   000041                ; // Fall through to label ?Subroutine20
    144          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine20:
   \   000000   7F03         MOV     R7,#0x3
   \   000002   02....       LJMP    ?BANKED_LEAVE_XDATA

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine5:
   \   000000   E0           MOVX    A,@DPTR
   \   000001   F5..         MOV     ?V0 + 0,A
   \   000003   A3           INC     DPTR
   \   000004   E0           MOVX    A,@DPTR
   \   000005   F5..         MOV     ?V0 + 1,A
   \   000007   22           RET
    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           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    158          void *osal_cpyExtAddr( void *dest, void *src )
   \                     osal_cpyExtAddr:
    159          {
   \   000000   74F5         MOV     A,#-0xb
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 11
   \   000005                ; Auto size: 0
    160            return osal_memcpy( dest, src, Z_EXTADDR_LEN );
   \   000005                ; Setup parameters for call to function osal_memcpy
   \   000005   8C..         MOV     ?V0 + 0,R4
   \   000007   8D..         MOV     ?V0 + 1,R5
   \   000009   75..00       MOV     ?V0 + 2,#0x0
   \   00000C   78..         MOV     R0,#?V0 + 0
   \   00000E   12....       LCALL   ?PUSH_XSTACK_I_THREE
   \   000011   7C08         MOV     R4,#0x8
   \   000013   7D00         MOV     R5,#0x0
   \   000015   90....       MOV     DPTR,#(osal_memcpy & 0xffff)
   \   000018   74..         MOV     A,#((osal_memcpy >> 16) & 0xff)
   \   00001A   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00001D   7403         MOV     A,#0x3
   \   00001F   12....       LCALL   ?DEALLOC_XSTACK8
   \   000022   80..         SJMP    ?Subroutine20
    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           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    176          void *osal_memset( void *dest, byte value, int len )
   \                     osal_memset:
    177          {
   \   000000   74F6         MOV     A,#-0xa
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 10
   \   000005                ; Auto size: 0
    178            return memset( dest, value, len );
   \   000005                ; Setup parameters for call to function memset
   \   000005   8C..         MOV     ?V0 + 0,R4
   \   000007   8D..         MOV     ?V0 + 1,R5
   \   000009   78..         MOV     R0,#?V0 + 0
   \   00000B   12....       LCALL   ?PUSH_XSTACK_I_TWO
   \   00000E   E9           MOV     A,R1
   \   00000F   FC           MOV     R4,A
   \   000010   7D00         MOV     R5,#0x0
   \   000012   90....       MOV     DPTR,#(memset & 0xffff)
   \   000015   74..         MOV     A,#((memset >> 16) & 0xff)
   \   000017   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00001A   7402         MOV     A,#0x2
   \   00001C   12....       LCALL   ?DEALLOC_XSTACK8
   \   00001F   02....       LJMP    ?Subroutine21 & 0xFFFF
    179          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine21:
   \   000000   7F02         MOV     R7,#0x2
   \   000002   02....       LJMP    ?BANKED_LEAVE_XDATA
    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           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    192          uint16 osal_build_uint16( byte *swapped )
   \                     osal_build_uint16:
    193          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
    194            return ( BUILD_UINT16( swapped[0], swapped[1] ) );
   \   000005   8A82         MOV     DPL,R2
   \   000007   8B83         MOV     DPH,R3
   \   000009   E0           MOVX    A,@DPTR
   \   00000A   FC           MOV     R4,A
   \   00000B   A3           INC     DPTR
   \   00000C   E0           MOVX    A,@DPTR
   \   00000D   F9           MOV     R1,A
   \   00000E   E4           CLR     A
   \   00000F   2C           ADD     A,R4
   \   000010   FA           MOV     R2,A
   \   000011   E9           MOV     A,R1
   \   000012   3400         ADDC    A,#0x0
   \   000014   FB           MOV     R3,A
   \   000015                REQUIRE ?Subroutine23
   \   000015                ; // Fall through to label ?Subroutine23
    195          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine23:
   \   000000   7F01         MOV     R7,#0x1
   \   000002   02....       LJMP    ?BANKED_LEAVE_XDATA
    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           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    209          uint32 osal_build_uint32( byte *swapped, byte len )
   \                     osal_build_uint32:
    210          {
   \   000000   74F0         MOV     A,#-0x10

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -