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

📄 uip_arp.lst

📁 一个AVR 上的UIP移植程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -