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

📄 adler32.asm

📁 zlib dll in wince 5.0 parfrom
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	setf.sig f50=r27				    //120 	cc:2
  (p15)	break.i	 1					    //120 	cc:2
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X01770 
	nop.m	 0
	fcvt.xuf.s1 f53=f51				    //120 	cc:7
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X01780 
	nop.m	 0
	fcvt.xuf.s1 f52=f50				    //120 	cc:8
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X01790 
	nop.m	 0
	frcpa.s1 f55,p10=f52, f53			    //120 	cc:12
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X017a0 
	nop.m	 0
  (p10)	fma.s1	f56=f52, f55, f0			    //120 	cc:16
	nop.b	 0
 }
 {   .mfb  //R-Addr: 0X017b0 
	nop.m	 0
  (p10)	fnma.s1	f55=f53, f55, f1			    //120 	cc:16
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X017c0 
	setf.sig f53=r25, f53				    //120 	cc:17
	nop.m	 0
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X017d0 
	nop.m	 0
  (p10)	fma.s1	f52=f55, f55, f54, f52			    //120 	cc:20
	nop.b	 0
 }
 {   .mfb  //R-Addr: 0X017e0 
	nop.m	 0
  (p10)	fma.s1	f56=f55, f56, f56			    //120 	cc:20
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X017f0 
	nop.m	 0
  (p10)	fma.s1	f55=f52, f56, f56, f55			    //120 	cc:24
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X01800 
	nop.m	 0
	fcvt.fxu.trunc.s1 f52=f55, f52			    //120 	cc:28
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X01810 
	nop.m	 0
	xma.l	f55=f52, f53, f50, f55			    //120 	cc:32
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X01820 
	getf.sig r22=f55;;				    //120 	cc:36
	st4	[r21]=r22				    //120 	cc:41
	nop.i	 0;;
 }
$LN5@adler32:

// 121  :     }
// 122  : 
// 123  :     /* return recombined sums */
// 124  :     return adler | (sum2 << 16);

 {   .mib  //R-Addr: 0X01830 
	adds	r20=sum2$, sp				    //124 	cc:0
	adds	r17=adler$, sp				    //124 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X01840 
	ld4	r19=[r20]				    //124 	cc:1
	ld4	r16=[r17]				    //124 	cc:1
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X01850 
	nop.m	 0
	shl	r18=r19, 16;;				    //124 	cc:2
	or	r8=r16, r18;;				    //124 	cc:3
 }
$LN19@adler32:

// 125  : }

 {   .mmb  //R-Addr: 0X01860 
	adds	sp=32, sp				    //125 	cc:0
	nop.m	 0
	br.ret.sptk.many b0;;				    //125 	cc:0
 }
// End code for function:
	.endp	adler32#
	.type	adler32_combine#	,@function 
        .global adler32_combine#
	.section	.pdata
$T78747: data4	@imagerel($LN7@adler32_co#)
	data4	@imagerel($LN7@adler32_co#+1328)
	data4	@imagerel($T78745#)
	.section	.xdata
	.skip 8
$T78745: data2	03H
	data2	00H
	data4	02H
	string	"\x08"		//R1:prologue size 8
	string	"\xe0\x00\x02"	//P7:mem_stack_f time 0 size 2
	string	"\x61\xf1\x01"	//R3:body size 241
	string	"\x81"		//B1:label_state 1
	string	"\xc0\x02"	//B2:ecount 0 time 2
	string	"\x00\x00\x00\x00\x00\x00" //padding
// Function compile flags: /Odtp
	.section	.text

// Begin code for function: adler32_combine:
	.proc	adler32_combine#
	.align 32
rem$	= 4
sum2$	= 8
adler1$	= 16
adler2$	= 24
len2$	= 32
adler32_combine: 
// adler1$ = r32
// adler2$ = r33
// len2$ = r34
// Output regs: None
$LN7@adler32_co:

// 132  : {
// 133  :     unsigned long sum1;
// 134  :     unsigned long sum2;
// 135  :     unsigned rem;
// 136  : 
// 137  :     /* the derivation of this formula is left as an exercise for the reader */
// 138  :     rem = (unsigned)(len2 % BASE);
// 139  :     sum1 = adler1 & 0xffff;
// 140  :     sum2 = rem * sum1;
// 141  :     MOD(sum2);
// 142  :     sum1 += (adler2 & 0xffff) + BASE - 1;
// 143  :     sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;
// 144  :     if (sum1 > BASE) sum1 -= BASE;

 {   .mmi  //R-Addr: 0X00 
	adds	sp=-32, sp;;				    //132 	cc:0
	adds	r31=adler1$, sp
	adds	r30=adler2$, sp
 }
 {   .mmi  //R-Addr: 0X010 
	adds	r29=len2$, sp;;
	st4	[r31]=r32
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X020 
	st4	[r30]=r33;;
	st4	[r29]=r34
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X030 
	adds	r28=len2$, sp				    //138 	cc:0
	mov	r26=65521				    //138 	cc:0, 0000fff1H
	mov	r25=65501				    //138 	cc:0, 0000ffddH
 }
 {   .mmi  //R-Addr: 0X040 
	adds	r21=rem$, sp;;				    //138 	cc:0
	ld4	r27=[r28]				    //138 	cc:1
	cmp.eq.unc p15,p0=0, r26			    //138 	cc:1
 }
 {   .mmi  //R-Addr: 0X050 
	setf.sig f7=r26					    //138 	cc:1
	setf.exp f10=r25				    //138 	cc:1
	sub	r25=r0, r26, r25;;			    //138 	cc:1
 }
 {   .mib  //R-Addr: 0X060 
	setf.sig f6=r27					    //138 	cc:2
  (p15)	break.i	 1					    //138 	cc:2
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X070 
	nop.m	 0
	fcvt.xuf.s1 f9=f7				    //138 	cc:7
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X080 
	nop.m	 0
	fcvt.xuf.s1 f8=f6				    //138 	cc:8
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X090 
	nop.m	 0
	frcpa.s1 f11,p6=f8, f9				    //138 	cc:12
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0a0 
	nop.m	 0
  (p6)	fma.s1	f12=f8, f11, f0				    //138 	cc:16
	nop.b	 0
 }
 {   .mfb  //R-Addr: 0X0b0 
	nop.m	 0
  (p6)	fnma.s1	f11=f9, f11, f1				    //138 	cc:16
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0c0 
	setf.sig f9=r25, f9				    //138 	cc:17
	nop.m	 0
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0d0 
	nop.m	 0
  (p6)	fma.s1	f8=f11, f11, f10, f8			    //138 	cc:20
	nop.b	 0
 }
 {   .mfb  //R-Addr: 0X0e0 
	nop.m	 0
  (p6)	fma.s1	f12=f11, f12, f12			    //138 	cc:20
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0f0 
	nop.m	 0
  (p6)	fma.s1	f11=f8, f12, f12, f11			    //138 	cc:24
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0100 
	nop.m	 0
	fcvt.fxu.trunc.s1 f8=f11, f8			    //138 	cc:28
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0110 
	nop.m	 0
	xma.l	f11=f8, f9, f6, f11			    //138 	cc:32
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0120 
	getf.sig r22=f11;;				    //138 	cc:36
	st4	[r21]=r22				    //138 	cc:41
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0130 
	adds	r20=adler1$, sp				    //139 	cc:0
	adds	r17=sum1$, sp				    //139 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0140 
	ld4	r19=[r20];;				    //139 	cc:1
	nop.m	 0
	zxt2	r18=r19;;				    //139 	cc:2
 }
 {   .mmi  //R-Addr: 0X0150 
	st4	[r17]=r18;;				    //139 	cc:3
	adds	r16=rem$, sp				    //140 	cc:0
	adds	r11=sum1$, sp				    //140 	cc:0
 }
 {   .mmi  //R-Addr: 0X0160 
	adds	r8=sum2$, sp;;				    //140 	cc:0
	ld4	r15=[r16]				    //140 	cc:1
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X0170 
	ld4	r10=[r11];;				    //140 	cc:1
	setf.sig f13=r15				    //140 	cc:2
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0180 
	setf.sig f14=r10				    //140 	cc:2
	nop.m	 0
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0190 
	nop.m	 0
	xma.lu	f15=f13, f14, f0			    //140 	cc:8
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X01a0 
	getf.sig r9=f15;;				    //140 	cc:12
	st4	[r8]=r9					    //140 	cc:17
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X01b0 
	adds	r31=sum2$, sp				    //141 	cc:0
	mov	r29=65521				    //141 	cc:0, 0000fff1H
	mov	r28=65501				    //141 	cc:0, 0000ffddH
 }
 {   .mmi  //R-Addr: 0X01c0 
	adds	r26=sum2$, sp;;				    //141 	cc:0
	ld4	r30=[r31]				    //141 	cc:1
	cmp.eq.unc p15,p0=0, r29			    //141 	cc:1
 }
 {   .mmi  //R-Addr: 0X01d0 
	setf.sig f33=r29				    //141 	cc:1
	setf.exp f36=r28				    //141 	cc:1
	sub	r28=r0, r29, r28;;			    //141 	cc:1
 }
 {   .mib  //R-Addr: 0X01e0 
	setf.sig f32=r30				    //141 	cc:2
  (p15)	break.i	 1					    //141 	cc:2
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X01f0 
	nop.m	 0
	fcvt.xuf.s1 f35=f33				    //141 	cc:7
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0200 
	nop.m	 0
	fcvt.xuf.s1 f34=f32				    //141 	cc:8
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0210 
	nop.m	 0
	frcpa.s1 f37,p7=f34, f35			    //141 	cc:12
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0220 
	nop.m	 0
  (p7)	fma.s1	f38=f34, f37, f0			    //141 	cc:16
	nop.b	 0
 }
 {   .mfb  //R-Addr: 0X0230 
	nop.m	 0
  (p7)	fnma.s1	f37=f35, f37, f1			    //141 	cc:16
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X0240 
	setf.sig f35=r28, f35				    //141 	cc:17
	nop.m	 0
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0250 
	nop.m	 0
  (p7)	fma.s1	f34=f37, f37, f36, f34			    //141 	cc:20
	nop.b	 0
 }
 {   .mfb  //R-Addr: 0X0260 
	nop.m	 0
  (p7)	fma.s1	f38=f37, f38, f38			    //141 	cc:20
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0270 
	nop.m	 0
  (p7)	fma.s1	f37=f34, f38, f38, f37			    //141 	cc:24
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0280 
	nop.m	 0
	fcvt.fxu.trunc.s1 f34=f37, f34			    //141 	cc:28
	nop.b	 0;;
 }
 {   .mfb  //R-Addr: 0X0290 
	nop.m	 0
	xma.l	f37=f34, f35, f32, f37			    //141 	cc:32
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X02a0 
	getf.sig r27=f37;;				    //141 	cc:36
	st4	[r26]=r27				    //141 	cc:41
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X02b0 
	adds	r25=adler2$, sp				    //142 	cc:0
	mov	r20=65521				    //142 	cc:0, 0000fff1H
	adds	r17=sum1$, sp				    //142 	cc:0
 }
 {   .mmi  //R-Addr: 0X02c0 
	adds	r11=sum1$, sp;;				    //142 	cc:0
	ld4	r22=[r25]				    //142 	cc:1
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X02d0 
	ld4	r16=[r17];;				    //142 	cc:1
	nop.m	 0
	zxt2	r21=r22;;				    //142 	cc:2
 }
 {   .mmi  //R-Addr: 0X02e0 
	add	r19=r20, r21;;				    //142 	cc:3
	adds	r18=-1, r19				    //142 	cc:4
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X02f0 
	add	r15=r16, r18;;				    //142 	cc:5
	st4	[r11]=r15				    //142 	cc:6
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0300 
	adds	r10=adler1$, sp				    //143 	cc:0
	adds	r31=adler2$, sp				    //143 	cc:0
	mov	r27=65521				    //143 	cc:0, 0000fff1H
 }
 {   .mmi  //R-Addr: 0X0310 
	adds	r25=rem$, sp				    //143 	cc:0
	adds	r20=sum2$, sp				    //143 	cc:0
	adds	r17=sum2$, sp;;				    //143 	cc:0
 }
 {   .mmb  //R-Addr: 0X0320 
	ld4	r9=[r10]				    //143 	cc:1
	ld4	r30=[r31]				    //143 	cc:1
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0330 
	ld4	r22=[r25]				    //143 	cc:2
	ld4	r19=[r20]				    //143 	cc:2
	extr.u	r8=r9, 16, 16				    //143 	cc:2
 }
 {   .mii  //R-Addr: 0X0340 
	nop.m	 0
	extr.u	r29=r30, 16, 16;;			    //143 	cc:2
	add	r28=r8, r29;;				    //143 	cc:3
 }
 {   .mmi  //R-Addr: 0X0350 
	add	r26=r27, r28;;				    //143 	cc:4
	sub	r21=r26, r22				    //143 	cc:5
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X0360 
	add	r18=r19, r21;;				    //143 	cc:6
	st4	[r17]=r18				    //143 	cc:7
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X0370 
	adds	r16=sum1$, sp				    //144 	cc:0
	mov	r11=65521				    //144 	cc:0, 0000fff1H
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0380 
	ld4	r15=[r16];;				    //144 	cc:1
	cmp4.geu.unc p14,p15=r11, r15			    //144 	cc:2
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0390 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN4@adler32_co#;;		    //144 	cc:2
 }

// 144  :     if (sum1 > BASE) sum1 -= BASE;

 {   .mmi  //R-Addr: 0X03a0 
	adds	r10=sum1$, sp				    //144 	cc:3
	mov	r8=65521				    //144 	cc:3, 0000fff1H
	adds	r30=sum1$, sp;;				    //144 	cc:3
 }
 {   .mmi  //R-Addr: 0X03b0 
	ld4	r9=[r10];;				    //144 	cc:4
	sub	r31=r9, r8				    //144 	cc:5
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X03c0 
	st4	[r30]=r31				    //144 	cc:6
	nop.m	 0
	nop.b	 0;;
 }
$LN4@adler32_co:

// 145  :     if (sum1 > BASE) sum1 -= BASE;

 {   .mib  //R-Addr: 0X03d0 
	adds	r29=sum1$, sp				    //145 	cc:0
	mov	r27=65521				    //145 	cc:0, 0000fff1H
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X03e0 
	ld4	r28=[r29];;				    //145 	cc:1
	cmp4.geu.unc p14,p15=r27, r28			    //145 	cc:2
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X03f0 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN3@adler32_co#;;		    //145 	cc:2
 }

// 145  :     if (sum1 > BASE) sum1 -= BASE;

 {   .mmi  //R-Addr: 0X0400 
	adds	r26=sum1$, sp				    //145 	cc:3
	mov	r22=65521				    //145 	cc:3, 0000fff1H
	adds	r20=sum1$, sp;;				    //145 	cc:3
 }
 {   .mmi  //R-Addr: 0X0410 
	ld4	r25=[r26];;				    //145 	cc:4
	sub	r21=r25, r22				    //145 	cc:5
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X0420 
	st4	[r20]=r21				    //145 	cc:6
	nop.m	 0
	nop.b	 0;;
 }
$LN3@adler32_co:

// 146  :     if (sum2 > (BASE << 1)) sum2 -= (BASE << 1);

 {   .mib  //R-Addr: 0X0430 
	adds	r19=sum2$, sp				    //146 	cc:0
	mov	r17=131042				    //146 	cc:0, 0001ffe2H
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X0440 
	ld4	r18=[r19];;				    //146 	cc:1
	cmp4.geu.unc p14,p15=r17, r18			    //146 	cc:2
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X0450 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN2@adler32_co#;;		    //146 	cc:2
 }

// 146  :     if (sum2 > (BASE << 1)) sum2 -= (BASE << 1);

 {   .mmi  //R-Addr: 0X0460 
	adds	r16=sum2$, sp				    //146 	cc:3
	mov	r11=131042				    //146 	cc:3, 0001ff

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -