; generated by ARM C/C++ Compiler, 4.1 [Build 481]
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\uip.o --depend=.\Obj\uip.d --cpu=Cortex-M3 --apcs=interwork -I..\..\Libraries\CMSIS\Core\CM3 -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\Source\inc -I..\..\Libraries\uIP-1.0\apps\webserver -I..\..\Libraries\uIP-1.0\uip -I..\..\Source\src\uIP_DM9000 -I..\..\Source\inc\fonts -I..\..\Libraries\Network -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER ..\..\Libraries\uIP-1.0\uip\uip.c]
THUMB
AREA ||i.chksum||, CODE, READONLY, ALIGN=1
chksum PROC
;;;279 static u16_t
;;;280 chksum(u16_t sum, const u8_t *data, u16_t len)
000000 b510 PUSH {r4,lr}
;;;281 {
;;;282 u16_t t;
;;;283 const u8_t *dataptr;
;;;284 const u8_t *last_byte;
;;;285
;;;286 dataptr = data;
;;;287 last_byte = data + len - 1;
000002 188b ADDS r3,r1,r2
000004 1e5b SUBS r3,r3,#1
;;;288
;;;289 while(dataptr < last_byte) { /* At least two more bytes */
000006 e00b B |L1.32|
|L1.8|
;;;290 t = (dataptr[0] << 8) + dataptr[1];
000008 784a LDRB r2,[r1,#1]
00000a 780c LDRB r4,[r1,#0]
00000c eb022204 ADD r2,r2,r4,LSL #8
000010 b292 UXTH r2,r2
;;;291 sum += t;
000012 4410 ADD r0,r0,r2
000014 b280 UXTH r0,r0
;;;292 if(sum < t) {
000016 4290 CMP r0,r2
000018 d201 BCS |L1.30|
;;;293 sum++; /* carry */
00001a 1c40 ADDS r0,r0,#1
00001c b280 UXTH r0,r0
|L1.30|
;;;294 }
;;;295 dataptr += 2;
00001e 1c89 ADDS r1,r1,#2
|L1.32|
000020 4299 CMP r1,r3 ;289
000022 d3f1 BCC |L1.8|
;;;296 }
;;;297
;;;298 if(dataptr == last_byte) {
000024 4299 CMP r1,r3
000026 d107 BNE |L1.56|
;;;299 t = (dataptr[0] << 8) + 0;
000028 7809 LDRB r1,[r1,#0]
00002a 0209 LSLS r1,r1,#8
;;;300 sum += t;
00002c 4408 ADD r0,r0,r1
00002e b280 UXTH r0,r0
;;;301 if(sum < t) {
000030 4288 CMP r0,r1
000032 d201 BCS |L1.56|
;;;302 sum++; /* carry */
000034 1c40 ADDS r0,r0,#1
000036 b280 UXTH r0,r0
|L1.56|
;;;303 }
;;;304 }
;;;305
;;;306 /* Return sum in host byte order. */
;;;307 return sum;
;;;308 }
000038 bd10 POP {r4,pc}
;;;309 /*---------------------------------------------------------------------------*/
ENDP
AREA ||i.htons||, CODE, READONLY, ALIGN=1
htons PROC
;;;1885 u16_t
;;;1886 htons(u16_t val)
000000 0201 LSLS r1,r0,#8
;;;1887 {
;;;1888 return HTONS(val);
000002 ea412010 ORR r0,r1,r0,LSR #8
000006 b280 UXTH r0,r0
;;;1889 }
000008 4770 BX lr
;;;1890 /*---------------------------------------------------------------------------*/
ENDP
AREA ||i.uip_add32||, CODE, READONLY, ALIGN=2
uip_add32 PROC
;;;248 void
;;;249 uip_add32(u8_t *op32, u16_t op16)
000000 b570 PUSH {r4-r6,lr}
;;;250 {
;;;251 uip_acc32[3] = op32[3] + (op16 & 0xff);
000002 78c2 LDRB r2,[r0,#3]
000004 b2ce UXTB r6,r1
000006 4432 ADD r2,r2,r6
000008 b2d5 UXTB r5,r2
00000a 4a13 LDR r2,|L3.88|
00000c 70d5 STRB r5,[r2,#3]
;;;252 uip_acc32[2] = op32[2] + (op16 >> 8);
00000e 7883 LDRB r3,[r0,#2]
000010 eb032311 ADD r3,r3,r1,LSR #8
000014 b2db UXTB r3,r3
000016 7093 STRB r3,[r2,#2]
;;;253 uip_acc32[1] = op32[1];
000018 7844 LDRB r4,[r0,#1]
00001a 7054 STRB r4,[r2,#1]
;;;254 uip_acc32[0] = op32[0];
00001c 7800 LDRB r0,[r0,#0]
00001e 7010 STRB r0,[r2,#0]
;;;255
;;;256 if(uip_acc32[2] < (op16 >> 8)) {
000020 ebb32f11 CMP r3,r1,LSR #8
000024 d206 BCS |L3.52|
;;;257 ++uip_acc32[1];
000026 1c64 ADDS r4,r4,#1
000028 f01401ff ANDS r1,r4,#0xff
00002c 7051 STRB r1,[r2,#1]
;;;258 if(uip_acc32[1] == 0) {
00002e d101 BNE |L3.52|
;;;259 ++uip_acc32[0];
000030 1c40 ADDS r0,r0,#1
000032 7010 STRB r0,[r2,#0]
|L3.52|
;;;260 }
;;;261 }
;;;262
;;;263
;;;264 if(uip_acc32[3] < (op16 & 0xff)) {
000034 42b5 CMP r5,r6
000036 d20d BCS |L3.84|
;;;265 ++uip_acc32[2];
000038 1c5b ADDS r3,r3,#1
00003a f01300ff ANDS r0,r3,#0xff
00003e 7090 STRB r0,[r2,#2]
;;;266 if(uip_acc32[2] == 0) {
000040 d108 BNE |L3.84|
;;;267 ++uip_acc32[1];
000042 7850 LDRB r0,[r2,#1] ; uip_acc32
000044 1c40 ADDS r0,r0,#1
000046 f01000ff ANDS r0,r0,#0xff
00004a 7050 STRB r0,[r2,#1]
;;;268 if(uip_acc32[1] == 0) {
00004c d102 BNE |L3.84|
;;;269 ++uip_acc32[0];
00004e 7810 LDRB r0,[r2,#0] ; uip_acc32
000050 1c40 ADDS r0,r0,#1
000052 7010 STRB r0,[r2,#0]
|L3.84|
;;;270 }
;;;271 }
;;;272 }
;;;273 }
000054 bd70 POP {r4-r6,pc}
;;;274
ENDP
000056 0000 DCW 0x0000
|L3.88|
DCD ||area_number.22||+0x24
AREA ||i.uip_add_rcv_nxt||, CODE, READONLY, ALIGN=2
uip_add_rcv_nxt PROC
;;;674 static void
;;;675 uip_add_rcv_nxt(u16_t n)
000000 b510 PUSH {r4,lr}
;;;676 {
;;;677 uip_add32(uip_conn->rcv_nxt, n);
000002 4c09 LDR r4,|L4.40|
000004 4601 MOV r1,r0
000006 69e0 LDR r0,[r4,#0x1c] ; uip_conn
000008 3008 ADDS r0,r0,#8
00000a f7fffffe BL uip_add32
;;;678 uip_conn->rcv_nxt[0] = uip_acc32[0];
00000e f1040124 ADD r1,r4,#0x24
000012 69e0 LDR r0,[r4,#0x1c] ; uip_conn
000014 780a LDRB r2,[r1,#0] ; uip_acc32
000016 7202 STRB r2,[r0,#8]
;;;679 uip_conn->rcv_nxt[1] = uip_acc32[1];
000018 784a LDRB r2,[r1,#1] ; uip_acc32
00001a 7242 STRB r2,[r0,#9]
;;;680 uip_conn->rcv_nxt[2] = uip_acc32[2];
00001c 788a LDRB r2,[r1,#2] ; uip_acc32
00001e 7282 STRB r2,[r0,#0xa]
;;;681 uip_conn->rcv_nxt[3] = uip_acc32[3];
000020 78c9 LDRB r1,[r1,#3] ; uip_acc32
000022 72c1 STRB r1,[r0,#0xb]
;;;682 }
000024 bd10 POP {r4,pc}
;;;683 /*---------------------------------------------------------------------------*/
ENDP
000026 0000 DCW 0x0000
|L4.40|
- 1
- 2
- 3
- 4
前往页