cksum.s,v
来自「TCP-IP红宝书源代码」· S,V 代码 · 共 301 行
S,V
301 行
head 1.6;
access;
symbols;
locks
dls:1.6; strict;
comment @# @;
1.6
date 97.09.21.19.27.59; author dls; state Dist;
branches;
next 1.5;
1.5
date 94.08.12.05.36.46; author dls; state Works;
branches;
next 1.4;
1.4
date 94.08.11.06.09.52; author dls; state Works;
branches;
next 1.3;
1.3
date 94.08.11.00.16.29; author dls; state Works;
branches;
next 1.2;
1.2
date 94.08.11.00.07.19; author dls; state New;
branches;
next 1.1;
1.1
date 94.08.10.19.29.32; author dls; state DLS;
branches;
next ;
desc
@@
1.6
log
@pre-3e code
@
text
@ .text
.align 2
.globl _cksum
_cksum:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%edx
movl 12(%ebp),%ecx
xorl %eax,%eax /* clear sum */
testl %ecx,%ecx
jle L4
sarl $6,%ecx
je L5
L7:
clc
addl (%edx),%eax
adcl 4(%edx),%eax
adcl 8(%edx),%eax
adcl 12(%edx),%eax
adcl 16(%edx),%eax
adcl 20(%edx),%eax
adcl 24(%edx),%eax
adcl 28(%edx),%eax
adcl 32(%edx),%eax
adcl 36(%edx),%eax
adcl 40(%edx),%eax
adcl 44(%edx),%eax
adcl 48(%edx),%eax
adcl 52(%edx),%eax
adcl 56(%edx),%eax
adcl 60(%edx),%eax
adcl $0,%eax
addl $64,%edx
decl %ecx
ja L7
L5:
movl 12(%ebp),%ecx
andl $0x3f,%ecx
sarl $2,%ecx
jle L4
L3:
clc
addl (%edx),%eax
adcl $0,%eax
addl $4,%edx
decl %ecx
ja L3
L4:
movl 12(%ebp),%ecx
andl $2,%ecx
jz L1
movzwl (%edx),%ecx
addl %ecx,%eax
addl $2,%edx
L1:
movl 12(%ebp),%ecx
andl $1,%ecx
jz L2
xorl %ecx,%ecx
movb (%edx),%cl
addl %ecx,%eax
L2:
movl %eax,%ecx
shrl $16,%eax
andl $0xffff,%eax
andl $0xffff,%ecx
addl %ecx,%eax
movl %eax,%ecx
shrl $16,%eax
addl %ecx,%eax
notw %ax
movzwl %ax,%eax
leave
ret
@
1.5
log
@*** empty log message ***
@
text
@@
1.4
log
@*** empty log message ***
@
text
@d10 30
a40 2
xorl %eax,%eax
testl %ecx,%ecx
@
1.3
log
@*** empty log message ***
@
text
@d1 1
a1 3
#NO_APP
gcc_compiled.:
.text
d3 1
a3 1
.globl _cksum
d5 9
a13 12
pushl %ebp
movl %esp,%ebp
subl $12,%esp
movl 12(%ebp),%eax
movl 12(%ebp),%edx
testl %eax,%eax
jge L2
incl %eax
L2:
sarl $1,%eax
movl %eax,%edx
movl $0,-4(%ebp)
d15 6
a20 9
cmpl $0,%edx
jle L4
movl 8(%ebp),%eax
movzwl (%eax),%eax
addl %eax,-4(%ebp)
addl $2,8(%ebp)
L5:
decl %edx
jmp L3
d22 7
a28 24
movl 12(%ebp),%eax
andl $1,%eax
testl %eax,%eax
je L6
movl 8(%ebp),%eax
movzbw (%eax),%cx
movw %cx,-8(%ebp)
movzwl -8(%ebp),%eax
addl %eax,-4(%ebp)
L6:
movl -4(%ebp),%eax
shrl $16,%eax
movl -4(%ebp),%edx
andl $65535,%edx
movl %eax,%ecx
addl %edx,%ecx
movl %ecx,-4(%ebp)
movl %ecx,%eax
shrl $16,%eax
addl %eax,-4(%ebp)
movw -4(%ebp),%ax
notw %ax
movzwl %ax,%eax
jmp L1
d30 18
@
1.2
log
@*** empty log message ***
@
text
@d17 1
a17 1
movl %eax,-12(%ebp)
d20 1
a20 1
cmpl $0,-12(%ebp)
d27 1
a27 1
decl -12(%ebp)
@
1.1
log
@Initial revision
@
text
@d1 3
a3 3
/* cksum.s - cksum */
.text
d5 1
a5 7
.globl _cksum
/*------------------------------------------------------------------------
* cksum - a fast internet checksummer
* cksum(buf, nbytes)
*------------------------------------------------------------------------
*/
d7 12
a18 9
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%ebx
movl 12(%ebp),%ecx
sarl $2,%ecx /* count in longs */
xorl %eax,%eax /* sum = 0 */
testl %ecx,%ecx
jle L4
d20 9
a28 6
clc
addl (%ebx),%eax
adcl $0,%eax
addl $4,%ebx
decl %ecx
ja L3
d30 24
a53 7
movl 12(%ebp),%ecx
andl $2,%ecx
jz L1
movzwl (%ebx),%edx
addl %edx,%eax
addl $2,%ebx
a54 18
movl 12(%ebp),%ecx
andl $1,%ecx
jz L2
xorl %ecx,%ecx
movb (%ebx),%cl
addl %ecx,%eax
L2:
movl %eax,%ecx
shrl $16,%eax
andl $0xffff,%eax
andl $0xffff,%ecx
addl %ecx,%eax
movl %eax,%ecx
shrl $16,%eax
addl %ecx,%eax
notw %ax
movzwl %ax,%eax
@
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?