📄 uip_arch.lst
字号:
C51 COMPILER V8.02 UIP_ARCH 10/13/2008 17:11:19 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE UIP_ARCH
OBJECT MODULE PLACED IN .\out\uip_arch.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uip_arch.c LARGE OPTIMIZE(SIZE) BROWSE DEBUG OBJECTEXTEND PRINT(.\out\uip_a
-rch.lst) OBJECT(.\out\uip_arch.obj)
line level source
1
2
3 #include "uip.h"
4 #include "uip_arch.h"
5
6 #define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
7 #define IP_PROTO_TCP 6
8
9 /*-----------------------------------------------------------------------------------*/
10 void
11 uip_add32(u8_t *op32, u16_t op16)
12 {
13 1
14 1 uip_acc32[3] = op32[3] + (op16 & 0xff);
15 1 uip_acc32[2] = op32[2] + (op16 >> 8);
16 1 uip_acc32[1] = op32[1];
17 1 uip_acc32[0] = op32[0];
18 1
19 1 if(uip_acc32[2] < (op16 >> 8)) {
20 2 ++uip_acc32[1];
21 2 if(uip_acc32[1] == 0) {
22 3 ++uip_acc32[0];
23 3 }
24 2 }
25 1
26 1
27 1 if(uip_acc32[3] < (op16 & 0xff)) {
28 2 ++uip_acc32[2];
29 2 if(uip_acc32[2] == 0) {
30 3 ++uip_acc32[1];
31 3 if(uip_acc32[1] == 0) {
32 4 ++uip_acc32[0];
33 4 }
34 3 }
35 2 }
36 1 }
37
38 /********************************************************************************/
39 /* function : chksum() */
40 /* created : hw-chen */
41 /* descript : calculate checksum */
42 /********************************************************************************/
43 u16_t uip_chksum(u16_t sum, u16_t * buffer, u16_t size)
44 { u16_t i,length;
45 1 u32_t cksum;
46 1 length=size>>0x1;
47 1 cksum =0x0;
48 1 cksum+=sum;
49 1 for(i=0x0; i<length; i++)
50 1 { cksum+=buffer[i];
51 2 }
52 1 if(size&0x1)
53 1 { cksum+=buffer[i]&0xFF00;
54 2 }
C51 COMPILER V8.02 UIP_ARCH 10/13/2008 17:11:19 PAGE 2
55 1 cksum =(cksum>>16)+(cksum&0xFFFF);
56 1 cksum+=(cksum>>16);
57 1 return (u16_t)cksum;
58 1 }
59
60 /********************************************************************************/
61 /* function : uip_ipchksum() */
62 /* created : hw-chen */
63 /* descript : calculate ip layer checksum */
64 /********************************************************************************/
65 u16_t uip_ipchksum(void)
66 { return uip_chksum(0x0,(u16_t*)&uip_buf[UIP_LLH_LEN], 20);
67 1 }
68
69 /********************************************************************************/
70 /* 定义TCP伪首部 */
71 /********************************************************************************/
72 typedef struct _sd_hdr st_tsd_hdr;
73 struct _sd_hdr
74 { u16_t srcaddr[0x2];
75 u16_t dstaddr[0x2];
76 u8_t rsvd;
77 u8_t protocol; //* 协议类型
78 u16_t lenth; //* TCP长度
79 };
80
81 /********************************************************************************/
82 /* function : uip_tcpchksum() */
83 /* created : hw-chen */
84 /* descript : TCP头部校验和 */
85 /********************************************************************************/
86 u16_t uip_tcpchksum(void)
87 { st_tsd_hdr tsd_header;
88 1 u16_t length;
89 1 u16_t tmp;
90 1 u16_t sum1;
91 1 u16_t sum2;
92 1 tmp=BUF->len[0x0];
93 1 tmp<<=0x8;
94 1 tmp+=BUF->len[0x1];
95 1 length=HTONS(tmp)-20;
96 1 tsd_header.srcaddr[0] = BUF->srcipaddr[0x0];
97 1 tsd_header.srcaddr[1] = BUF->srcipaddr[0x1];
98 1 tsd_header.dstaddr[0] = BUF->destipaddr[0x0];
99 1 tsd_header.dstaddr[1] = BUF->destipaddr[0x1];
100 1 tsd_header.rsvd = 0x0;
101 1 tsd_header.protocol = 0x6;
102 1 tsd_header.lenth = HTONS(length);
103 1 sum1=uip_chksum(0x0,(u16_t*)&tsd_header,sizeof(st_tsd_hdr));
104 1 sum2=uip_chksum(sum1,(u16_t*)(&uip_buf[20+UIP_LLH_LEN]),length);
105 1 return sum2;
106 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 616 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 31
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V8.02 UIP_ARCH 10/13/2008 17:11:19 PAGE 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -