📄 uip_arp.lst
字号:
140 0050 9181 ldd r25,Z+1
141 0052 2281 ldd r18,Z+2
142 0054 3381 ldd r19,Z+3
143 0056 822B or r24,r18
144 0058 932B or r25,r19
145 005a 892B or r24,r25
146 005c 61F0 breq .L13
147 005e 852F mov r24,r21
148 0060 9927 clr r25
149 0062 2285 ldd r18,Z+10
150 0064 821B sub r24,r18
151 0066 9109 sbc r25,__zero_reg__
152 0068 8837 cpi r24,120
153 006a 9105 cpc r25,__zero_reg__
154 006c 24F0 brlt .L13
123:uip_arp.c **** time - arp_table[i].time >= UIP_ARP_MAXAGE) {
124:uip_arp.c **** arp_table[i].ipaddr[0] =
155 .stabn 68,0,124,.LM10-uip_arp_timer
156 .LM10:
157 006e 1282 std Z+2,__zero_reg__
158 0070 1382 std Z+3,__zero_reg__
159 0072 1082 st Z,__zero_reg__
160 0074 1182 std Z+1,__zero_reg__
161 .stabn 68,0,121,.LM11-uip_arp_timer
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 6
162 .LM11:
163 .L13:
164 0076 242F mov r18,r20
165 0078 2F5F subi r18,lo8(-(1))
166 007a E1F2 breq .L16
167 007c 2093 0000 sts i,r18
125:uip_arp.c **** arp_table[i].ipaddr[1] = 0;
126:uip_arp.c **** }
127:uip_arp.c **** }
128:uip_arp.c ****
129:uip_arp.c **** }
168 .stabn 68,0,129,.LM12-uip_arp_timer
169 .LM12:
170 /* epilogue: frame size=0 */
171 0080 0895 ret
172 /* epilogue end (size=1) */
173 /* function uip_arp_timer size 49 (48) */
174 .size uip_arp_timer, .-uip_arp_timer
175 .Lscope1:
176 .stabs "",36,0,0,.Lscope1-uip_arp_timer
177 .stabs "uip_arp_update:f(0,20)",36,0,133,uip_arp_update
178 .stabs "ipaddr:P(1,4)=*(4,2)",64,0,132,28
179 .stabs "ethaddr:P(1,5)=*(2,1)",64,0,132,16
180 .type uip_arp_update, @function
181 uip_arp_update:
130:uip_arp.c **** /*-----------------------------------------------------------------------------------*/
131:uip_arp.c **** static void
132:uip_arp.c **** uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr)
133:uip_arp.c **** {
182 .stabn 68,0,133,.LM13-uip_arp_update
183 .LM13:
184 /* prologue: frame size=0 */
185 0082 0F93 push r16
186 0084 1F93 push r17
187 0086 CF93 push r28
188 0088 DF93 push r29
189 /* prologue end (size=4) */
190 008a EC01 movw r28,r24
191 008c 8B01 movw r16,r22
134:uip_arp.c **** /* Walk through the ARP mapping table and try to find an entry to
135:uip_arp.c **** update. If none is found, the IP -> MAC address mapping is
136:uip_arp.c **** inserted in the ARP table. */
137:uip_arp.c **** for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
192 .stabn 68,0,137,.LM14-uip_arp_update
193 .LM14:
194 008e 1092 0000 sts i,__zero_reg__
195 .L32:
138:uip_arp.c ****
139:uip_arp.c **** /* Only check those entries that are actually in use. */
140:uip_arp.c **** if(arp_table[i].ipaddr[0] != 0 &&
196 .stabn 68,0,140,.LM15-uip_arp_update
197 .LM15:
198 0092 6091 0000 lds r22,i
199 0096 262F mov r18,r22
200 0098 3327 clr r19
201 009a 8BE0 ldi r24,lo8(11)
202 009c 90E0 ldi r25,hi8(11)
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 7
203 009e 289F mul r18,r24
204 00a0 F001 movw r30,r0
205 00a2 299F mul r18,r25
206 00a4 F00D add r31,r0
207 00a6 389F mul r19,r24
208 00a8 F00D add r31,r0
209 00aa 1124 clr r1
210 00ac E050 subi r30,lo8(-(arp_table))
211 00ae F040 sbci r31,hi8(-(arp_table))
212 00b0 4081 ld r20,Z
213 00b2 5181 ldd r21,Z+1
214 00b4 4115 cp r20,__zero_reg__
215 00b6 5105 cpc r21,__zero_reg__
216 00b8 81F1 breq .L23
217 00ba 2281 ldd r18,Z+2
218 00bc 3381 ldd r19,Z+3
219 00be 2115 cp r18,__zero_reg__
220 00c0 3105 cpc r19,__zero_reg__
221 00c2 59F1 breq .L23
141:uip_arp.c **** arp_table[i].ipaddr[1] != 0) {
142:uip_arp.c ****
143:uip_arp.c **** /* Check if the source IP address of the incoming packet matches
144:uip_arp.c **** the IP address in this ARP table entry. */
145:uip_arp.c **** if(ipaddr[0] == arp_table[i].ipaddr[0] &&
222 .stabn 68,0,145,.LM16-uip_arp_update
223 .LM16:
224 00c4 8881 ld r24,Y
225 00c6 9981 ldd r25,Y+1
226 00c8 8417 cp r24,r20
227 00ca 9507 cpc r25,r21
228 00cc 31F5 brne .L23
229 00ce 8A81 ldd r24,Y+2
230 00d0 9B81 ldd r25,Y+3
231 00d2 8217 cp r24,r18
232 00d4 9307 cpc r25,r19
233 00d6 09F5 brne .L23
146:uip_arp.c **** ipaddr[1] == arp_table[i].ipaddr[1]) {
147:uip_arp.c ****
148:uip_arp.c **** /* An old entry found, update this and return. */
149:uip_arp.c **** for(c = 0; c < 6; ++c) {
234 .stabn 68,0,149,.LM17-uip_arp_update
235 .LM17:
236 00d8 1092 0000 sts c,__zero_reg__
237 .L31:
150:uip_arp.c **** arp_table[i].ethaddr.addr[c] = ethaddr->addr[c];
238 .stabn 68,0,150,.LM18-uip_arp_update
239 .LM18:
240 00dc 4091 0000 lds r20,c
241 00e0 A42F mov r26,r20
242 00e2 BB27 clr r27
243 00e4 262F mov r18,r22
244 00e6 3327 clr r19
245 00e8 8BE0 ldi r24,lo8(11)
246 00ea 90E0 ldi r25,hi8(11)
247 00ec 289F mul r18,r24
248 00ee F001 movw r30,r0
249 00f0 299F mul r18,r25
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 8
250 00f2 F00D add r31,r0
251 00f4 389F mul r19,r24
252 00f6 F00D add r31,r0
253 00f8 1124 clr r1
254 00fa 9F01 movw r18,r30
255 00fc EA0F add r30,r26
256 00fe FB1F adc r31,r27
257 0100 E050 subi r30,lo8(-(arp_table))
258 0102 F040 sbci r31,hi8(-(arp_table))
259 0104 A00F add r26,r16
260 0106 B11F adc r27,r17
261 0108 8C91 ld r24,X
262 010a 8483 std Z+4,r24
263 .stabn 68,0,149,.LM19-uip_arp_update
264 .LM19:
265 010c 842F mov r24,r20
266 010e 8F5F subi r24,lo8(-(1))
267 0110 8093 0000 sts c,r24
268 0114 8630 cpi r24,lo8(6)
269 0116 10F3 brlo .L31
151:uip_arp.c **** }
152:uip_arp.c **** arp_table[i].time = time;
270 .stabn 68,0,152,.LM20-uip_arp_update
271 .LM20:
272 0118 8AC0 rjmp .L62
273 .stabn 68,0,137,.LM21-uip_arp_update
274 .LM21:
275 .L23:
276 011a 862F mov r24,r22
277 011c 8F5F subi r24,lo8(-(1))
278 011e 8093 0000 sts i,r24
279 0122 8823 tst r24
280 0124 09F4 brne .+2
281 0126 B5CF rjmp .L32
153:uip_arp.c **** return;
154:uip_arp.c **** }
155:uip_arp.c **** }
156:uip_arp.c **** }
157:uip_arp.c ****
158:uip_arp.c **** /* If we get here, no existing ARP table entry was found, so we
159:uip_arp.c **** create one. */
160:uip_arp.c ****
161:uip_arp.c **** /* First, we try to find an unused entry in the ARP table. */
162:uip_arp.c **** for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
282 .stabn 68,0,162,.LM22-uip_arp_update
283 .LM22:
284 0128 1092 0000 sts i,__zero_reg__
285 012c 40E0 ldi r20,lo8(0)
286 .L38:
163:uip_arp.c **** if(arp_table[i].ipaddr[0] == 0 &&
287 .stabn 68,0,163,.LM23-uip_arp_update
288 .LM23:
289 012e 842F mov r24,r20
290 0130 9927 clr r25
291 0132 2BE0 ldi r18,lo8(11)
292 0134 30E0 ldi r19,hi8(11)
293 0136 829F mul r24,r18
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 9
294 0138 F001 movw r30,r0
295 013a 839F mul r24,r19
296 013c F00D add r31,r0
297 013e 929F mul r25,r18
298 0140 F00D add r31,r0
299 0142 1124 clr r1
300 0144 E050 subi r30,lo8(-(arp_table))
301 0146 F040 sbci r31,hi8(-(arp_table))
302 0148 8081 ld r24,Z
303 014a 9181 ldd r25,Z+1
304 014c 892B or r24,r25
305 014e 21F4 brne .L35
306 0150 8281 ldd r24,Z+2
307 0152 9381 ldd r25,Z+3
308 0154 892B or r24,r25
309 0156 11F0 breq .L61
310 .stabn 68,0,162,.LM24-uip_arp_update
311 .LM24:
312 .L35:
313 0158 4F5F subi r20,lo8(-(1))
314 015a 49F3 breq .L38
315 .L61:
316 015c 4093 0000 sts i,r20
164:uip_arp.c **** arp_table[i].ipaddr[1] == 0)
165:uip_arp.c **** break;
166:uip_arp.c **** }
167:uip_arp.c ****
168:uip_arp.c **** /* If no unused entry is found, we try to find the oldest entry and
169:uip_arp.c **** throw it away. */
170:uip_arp.c **** if(i == UIP_ARPTAB_SIZE) {
317 .stabn 68,0,170,.LM25-uip_arp_update
318 .LM25:
319 0160 4130 cpi r20,lo8(1)
320 0162 69F5 brne .L39
171:uip_arp.c **** tmpage = 0;
321 .stabn 68,0,171,.LM26-uip_arp_update
322 .LM26:
323 0164 1092 0000 sts tmpage,__zero_reg__
172:uip_arp.c **** c = 0;
324 .stabn 68,0,172,.LM27-uip_arp_update
325 .LM27:
326 0168 1092 0000 sts c,__zero_reg__
173:uip_arp.c **** for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
327 .stabn 68,0,173,.LM28-uip_arp_update
328 .LM28:
329 016c 1092 0000 sts i,__zero_reg__
330 0170 7091 0000 lds r23,time
331 0174 A0E0 ldi r26,lo8(0)
332 0176 6A2F mov r22,r26
333 0178 BA2F mov r27,r26
334 .L45:
174:uip_arp.c **** if(time - arp_table[i].time > tmpage) {
335 .stabn 68,0,174,.LM29-uip_arp_update
336 .LM29:
337 017a 472F mov r20,r23
338 017c 5527 clr r21
339 017e 2A2F mov r18,r26
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s page 10
340 0180 3327 clr r19
341 0182 8BE0 ldi r24,lo8(11)
342 0184 90E0 ldi r25,hi8(11)
343 0186 289F mul r18,r24
344 0188 F001 movw r30,r0
345 018a 299F mul r18,r25
346 018c F00D add r31,r0
347 018e 389F mul r19,r24
348 0190 F00D add r31,r0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -