📄 uip.lst
字号:
79 001a 0196 adiw r24,1
80 001c 2223 tst r18
81 001e A9F3 breq .L6
190:uip.c **** }
191:uip.c **** for(c = 0; c < UIP_CONNS; ++c) {
82 .stabn 68,0,191,.LM5-uip_init
83 .LM5:
84 0020 1092 0000 sts c,__zero_reg__
85 0024 80E0 ldi r24,lo8(0)
86 0026 E0E0 ldi r30,lo8(uip_conns)
87 0028 F0E0 ldi r31,hi8(uip_conns)
88 .L11:
192:uip.c **** uip_conns[c].tcpstateflags = CLOSED;
89 .stabn 68,0,192,.LM6-uip_init
90 .LM6:
91 002a 1082 st Z,__zero_reg__
92 002c 7996 adiw r30,25
93 .stabn 68,0,191,.LM7-uip_init
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccSyaaaa.s page 6
94 .LM7:
95 002e 8F5F subi r24,lo8(-(1))
96 0030 E1F3 breq .L11
97 0032 81E0 ldi r24,lo8(1)
98 0034 8093 0000 sts c,r24
193:uip.c **** }
194:uip.c **** #if UIP_ACTIVE_OPEN
195:uip.c **** lastport = 1024;
196:uip.c **** #endif /* UIP_ACTIVE_OPEN */
197:uip.c **** }
99 .stabn 68,0,197,.LM8-uip_init
100 .LM8:
101 /* epilogue: frame size=0 */
102 0038 0895 ret
103 /* epilogue end (size=1) */
104 /* function uip_init size 30 (29) */
105 .size uip_init, .-uip_init
106 .Lscope0:
107 .stabs "",36,0,0,.Lscope0-uip_init
108 .stabs "uip_listen:F(0,20)",36,0,262,uip_listen
109 .stabs "port:P(3,2)",64,0,261,18
110 .global uip_listen
111 .type uip_listen, @function
112 uip_listen:
198:uip.c **** /*-----------------------------------------------------------------------------------*/
199:uip.c **** #if UIP_ACTIVE_OPEN
200:uip.c **** struct uip_conn *
201:uip.c **** uip_connect(u16_t *ripaddr, u16_t rport)
202:uip.c **** {
203:uip.c **** struct uip_conn *conn;
204:uip.c ****
205:uip.c **** /* Find an unused local port. */
206:uip.c **** again:
207:uip.c **** ++lastport;
208:uip.c ****
209:uip.c **** if(lastport >= 32000) {
210:uip.c **** lastport = 4096;
211:uip.c **** }
212:uip.c ****
213:uip.c **** for(c = 0; c < UIP_CONNS; ++c) {
214:uip.c **** if(uip_conns[c].tcpstateflags != CLOSED &&
215:uip.c **** uip_conns[c].lport == lastport)
216:uip.c **** goto again;
217:uip.c **** }
218:uip.c ****
219:uip.c ****
220:uip.c **** for(c = 0; c < UIP_CONNS; ++c) {
221:uip.c **** if(uip_conns[c].tcpstateflags == CLOSED)
222:uip.c **** goto found_unused;
223:uip.c **** }
224:uip.c **** for(c = 0; c < UIP_CONNS; ++c) {
225:uip.c **** if(uip_conns[c].tcpstateflags == TIME_WAIT)
226:uip.c **** goto found_unused;
227:uip.c **** }
228:uip.c **** return (void *)0;
229:uip.c ****
230:uip.c **** found_unused:
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccSyaaaa.s page 7
231:uip.c ****
232:uip.c **** conn = &uip_conns[c];
233:uip.c ****
234:uip.c **** conn->tcpstateflags = SYN_SENT | UIP_OUTSTANDING;
235:uip.c ****
236:uip.c **** conn->snd_nxt[0] = conn->ack_nxt[0] = iss[0];
237:uip.c **** conn->snd_nxt[1] = conn->ack_nxt[1] = iss[1];
238:uip.c **** conn->snd_nxt[2] = conn->ack_nxt[2] = iss[2];
239:uip.c **** conn->snd_nxt[3] = conn->ack_nxt[3] = iss[3];
240:uip.c ****
241:uip.c **** if(++conn->ack_nxt[3] == 0) {
242:uip.c **** if(++conn->ack_nxt[2] == 0) {
243:uip.c **** if(++conn->ack_nxt[1] == 0) {
244:uip.c **** ++conn->ack_nxt[0];
245:uip.c **** }
246:uip.c **** }
247:uip.c **** }
248:uip.c ****
249:uip.c **** conn->nrtx = 0;
250:uip.c **** conn->timer = 1; /* Send the SYN next time around. */
251:uip.c **** conn->lport = htons(lastport);
252:uip.c **** conn->rport = htons(rport);
253:uip.c **** conn->ripaddr[0] = ripaddr[0];
254:uip.c **** conn->ripaddr[1] = ripaddr[1];
255:uip.c ****
256:uip.c **** return conn;
257:uip.c **** }
258:uip.c **** #endif /* UIP_ACTIVE_OPEN */
259:uip.c **** /*-----------------------------------------------------------------------------------*/
260:uip.c **** void
261:uip.c **** uip_listen(u16_t port)
262:uip.c **** {
113 .stabn 68,0,262,.LM9-uip_listen
114 .LM9:
115 /* prologue: frame size=0 */
116 /* prologue end (size=0) */
117 003a 9C01 movw r18,r24
263:uip.c **** for(c = 0; c < UIP_LISTENPORTS; ++c) {
118 .stabn 68,0,263,.LM10-uip_listen
119 .LM10:
120 003c 1092 0000 sts c,__zero_reg__
121 0040 40E0 ldi r20,lo8(0)
122 .L24:
264:uip.c **** if(uip_listenports[c] == 0) {
123 .stabn 68,0,264,.LM11-uip_listen
124 .LM11:
125 0042 E42F mov r30,r20
126 0044 FF27 clr r31
127 0046 EE0F add r30,r30
128 0048 FF1F adc r31,r31
129 004a E050 subi r30,lo8(-(uip_listenports))
130 004c F040 sbci r31,hi8(-(uip_listenports))
131 004e 8081 ld r24,Z
132 0050 9181 ldd r25,Z+1
133 0052 892B or r24,r25
134 0054 49F4 brne .L21
265:uip.c **** uip_listenports[c] = htons(port);
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccSyaaaa.s page 8
135 .stabn 68,0,265,.LM12-uip_listen
136 .LM12:
137 0056 922F mov r25,r18
138 0058 8827 clr r24
139 005a 232F mov r18,r19
140 005c 3327 clr r19
141 005e 822B or r24,r18
142 0060 932B or r25,r19
143 0062 8083 st Z,r24
144 0064 9183 std Z+1,r25
266:uip.c **** break;
145 .stabn 68,0,266,.LM13-uip_listen
146 .LM13:
147 0066 02C0 rjmp .L26
148 .stabn 68,0,263,.LM14-uip_listen
149 .LM14:
150 .L21:
151 0068 4F5F subi r20,lo8(-(1))
152 006a 59F3 breq .L24
153 .L26:
154 006c 4093 0000 sts c,r20
267:uip.c **** }
268:uip.c **** }
269:uip.c **** }
155 .stabn 68,0,269,.LM15-uip_listen
156 .LM15:
157 /* epilogue: frame size=0 */
158 0070 0895 ret
159 /* epilogue end (size=1) */
160 /* function uip_listen size 29 (28) */
161 .size uip_listen, .-uip_listen
162 .Lscope1:
163 .stabs "",36,0,0,.Lscope1-uip_listen
164 .stabs "uip_process:F(0,20)",36,0,273,uip_process
165 .stabs "flag:P(3,1)",64,0,272,18
166 .global uip_process
167 .type uip_process, @function
168 uip_process:
270:uip.c **** /*-----------------------------------------------------------------------------------*/
271:uip.c **** void
272:uip.c **** uip_process(u8_t flag)
273:uip.c **** {
169 .stabn 68,0,273,.LM16-uip_process
170 .LM16:
171 /* prologue: frame size=0 */
172 0072 CF93 push r28
173 /* prologue end (size=1) */
174 0074 282F mov r18,r24
274:uip.c **** uip_appdata = &uip_buf[40 + UIP_LLH_LEN];
175 .stabn 68,0,274,.LM17-uip_process
176 .LM17:
177 0076 80E0 ldi r24,lo8(uip_buf+54)
178 0078 90E0 ldi r25,hi8(uip_buf+54)
179 007a 9093 0000 sts (uip_appdata)+1,r25
180 007e 8093 0000 sts uip_appdata,r24
275:uip.c ****
276:uip.c **** /* Check if we were invoked because of the perodic timer fireing. */
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccSyaaaa.s page 9
277:uip.c **** if(flag == UIP_TIMER) {
181 .stabn 68,0,277,.LM18-uip_process
182 .LM18:
183 0082 2230 cpi r18,lo8(2)
184 0084 09F0 breq .+2
185 0086 90C0 rjmp .L28
278:uip.c **** /* Increase the initial sequence number. */
279:uip.c **** if(++iss[3] == 0) {
186 .stabn 68,0,279,.LM19-uip_process
187 .LM19:
188 0088 8091 0000 lds r24,iss+3
189 008c 8F5F subi r24,lo8(-(1))
190 008e 8093 0000 sts iss+3,r24
191 0092 8823 tst r24
192 0094 99F4 brne .L29
280:uip.c **** if(++iss[2] == 0) {
193 .stabn 68,0,280,.LM20-uip_process
194 .LM20:
195 0096 8091 0000 lds r24,iss+2
196 009a 8F5F subi r24,lo8(-(1))
197 009c 8093 0000 sts iss+2,r24
198 00a0 8823 tst r24
199 00a2 61F4 brne .L29
281:uip.c **** if(++iss[1] == 0) {
200 .stabn 68,0,281,.LM21-uip_process
201 .LM21:
202 00a4 8091 0000 lds r24,iss+1
203 00a8 8F5F subi r24,lo8(-(1))
204 00aa 8093 0000 sts iss+1,r24
205 00ae 8823 tst r24
206 00b0 29F4 brne .L29
282:uip.c **** ++iss[0];
207 .stabn 68,0,282,.LM22-uip_process
208 .LM22:
209 00b2 8091 0000 lds r24,iss
210 00b6 8F5F subi r24,lo8(-(1))
211 00b8 8093 0000 sts iss,r24
212 .L29:
283:uip.c **** }
284:uip.c **** }
285:uip.c **** }
286:uip.c **** uip_len = 0;
213 .stabn 68,0,286,.LM23-uip_process
214 .LM23:
215 00bc 1092 0000 sts uip_len,__zero_reg__
287:uip.c **** if(uip_conn->tcpstateflags == TIME_WAIT ||
216 .stabn 68,0,287,.LM24-uip_process
217 .LM24:
218 00c0 E091 0000 lds r30,uip_conn
219 00c4 F091 0000 lds r31,(uip_conn)+1
220 00c8 8081 ld r24,Z
221 00ca 8730 cpi r24,lo8(7)
222 00cc 11F0 breq .L33
223 00ce 8530 cpi r24,lo8(5)
224 00d0 61F4 brne .L32
225 .L33:
288:uip.c **** uip_conn->tcpstateflags == FIN_WAIT_2) {
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccSyaaaa.s page 10
289:uip.c **** ++(uip_conn->timer);
226 .stabn 68,0,289,.LM25-uip_process
227 .LM25:
228 00d2 8689 ldd r24,Z+22
229 00d4 8F5F subi r24,lo8(-(1))
230 00d6 868B std Z+22,r24
290:uip.c **** if(uip_conn->timer == UIP_TIME_WAIT_TIMEOUT) {
231 .stabn 68,0,290,.LM26-uip_process
232 .LM26:
233 00d8 E091 0000 lds r30,uip_conn
234 00dc F091 0000 lds r31,(uip_conn)+1
235 00e0 8689 ldd r24,Z+22
236 00e2 8837 cpi r24,lo8(120)
237 00e4 09F0 breq .+2
238 00e6 C5C4 rjmp .L58
291:uip.c **** uip_conn->tcpstateflags = CLOSED;
239 .stabn 68,0,291,.LM27-uip_process
240 .LM27:
241 00e8 DAC3 rjmp .L180
242 .L32:
292:uip.c **** }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -