📄 mac_rx_pool.lst
字号:
55 ROOT MAC_RX_PACKET * mrxpReservePacket(void) {
\ mrxpReservePacket:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
56 MAC_RX_PACKET *pPacket;
57 UINT8 n;
58 for (n = 0; n < MAC_OPT_RX_POOL_SIZE; n++) {
\ 000004 7B00 MOV R3,#0x0
59 pPacket = &pMrxPacketPool[n];
\ ??mrxpReservePacket_0:
\ 000006 EB MOV A,R3
\ 000007 75F09F MOV B,#-0x61
\ 00000A A4 MUL AB
\ 00000B 24.. ADD A,#(pMrxPacketPool & 0xff)
\ 00000D F582 MOV DPL,A
\ 00000F E5F0 MOV A,B
\ 000011 34.. ADDC A,#((pMrxPacketPool >> 8) & 0xff)
\ 000013 F583 MOV DPH,A
60 DISABLE_GLOBAL_INT();
\ 000015 C2AF CLR 0xa8.7
61 if (!(pPacket->flags & MRXP_FLAG_PACKET_OCCUPIED_BM)) {
\ 000017 E0 MOVX A,@DPTR
\ 000018 A2E0 MOV C,0xE0 /* A */.0
\ 00001A 400B JC ??mrxpReservePacket_1
62 pPacket->flags |= MRXP_FLAG_PACKET_OCCUPIED_BM;
\ 00001C D2E0 SETB 0xE0 /* A */.0
\ 00001E F0 MOVX @DPTR,A
63 ENABLE_GLOBAL_INT();
\ 00001F D2AF SETB 0xa8.7
64 return pPacket;
\ 000021 AA82 MOV R2,DPL
\ 000023 AB83 MOV R3,DPH
\ 000025 800D SJMP ??mrxpReservePacket_2
65 }
66 ENABLE_GLOBAL_INT();
\ ??mrxpReservePacket_1:
\ 000027 D2AF SETB 0xa8.7
67 }
\ 000029 0B INC R3
\ 00002A EB MOV A,R3
\ 00002B C3 CLR C
\ 00002C 9404 SUBB A,#0x4
\ 00002E 40D6 JC ??mrxpReservePacket_0
68 return NULL;
\ 000030 7A00 MOV R2,#0x0
\ 000032 7B00 MOV R3,#0x0
\ ??mrxpReservePacket_2:
\ 000034 REQUIRE ?Subroutine0
\ 000034 ; // Fall through to label ?Subroutine0
69 } // mrxpReservePacket
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 D083 POP DPH
\ 000002 D082 POP DPL
\ 000004 22 RET
70
71
72
73
74 //-------------------------------------------------------------------------------------------------------
75 // void mrxpReleasePacket(MAC_RX_PACKET* pPacket)
76 //
77 // DESCRIPTION:
78 // Releases a packet back to the RX packet pool.
79 //
80 // ARGUMENTS:
81 // MAC_RX_PACKET* pPacket
82 // A pointer to the packet to be released. This parameter can be NULL.
83 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
84 ROOT void mrxpReleasePacket(MAC_RX_PACKET *pPacket) {
\ mrxpReleasePacket:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
85 if (pPacket) pPacket->flags = 0x00;
\ 000004 EA MOV A,R2
\ 000005 7001 JNZ ??mrxpReleasePacket_0
\ 000007 EB MOV A,R3
\ ??mrxpReleasePacket_0:
\ 000008 6006 JZ ??mrxpReleasePacket_1
\ 00000A E4 CLR A
\ 00000B 8A82 MOV DPL,R2
\ 00000D 8B83 MOV DPH,R3
\ 00000F F0 MOVX @DPTR,A
86 } // mrxpReleasePacket
\ ??mrxpReleasePacket_1:
\ 000010 80.. SJMP ?Subroutine0
\ In segment SFR_AN, at 0xa8
\ union <unnamed> volatile __sfr _A_IEN0
\ _A_IEN0:
\ 000000 DS 1
87
Maximum stack usage in bytes:
Function ISTACK PSTACK XSTACK
-------- ------ ------ ------
mrxpInit 0 0 11
-> memset 0 0 22
mrxpReleasePacket 3 0 0
mrxpReservePacket 2 0 0
Segment part sizes:
Function/Label Bytes
-------------- -----
pMrxPacketPool 636
mrxpInit 42
mrxpReservePacket 52
?Subroutine0 5
mrxpReleasePacket 18
_A_IEN0 1
117 bytes in segment NEAR_CODE
636 bytes in segment PM0_XDATA
1 byte in segment SFR_AN
117 bytes of CODE memory
0 bytes of DATA memory (+ 1 byte shared)
636 bytes of XDATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -