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

📄 inftrees.asm

📁 zlib dll in wince 5.0 parfrom
💻 ASM
📖 第 1 页 / 共 5 页
字号:
 }
 {   .mib  //R-Addr: 0X010f0 
	mov	r8=r11					    //238 	cc:10
	adds	r31=2, r11				    //238 	cc:10
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X01100 
	st2	[r8]=r9					    //238 	cc:11
	st2	[r31]=r30				    //238 	cc:11
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X01110 
	adds	r29=fill$, sp;;				    //239 	cc:0
	ld4	r28=[r29]				    //239 	cc:1
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X01120 
	cmp4.ne.unc p14,p15=r0, r28			    //239 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.many $LN22@inflate_ta#;;		    //239 	cc:2
 }

// 240  : 
// 241  :         /* backwards increment the len-bit code huff */
// 242  :         incr = 1U << (len - 1);

 {   .mmi  //R-Addr: 0X01130 
	adds	r27=len$, sp				    //242 	cc:0
	mov	r22=1					    //242 	cc:0
	adds	r19=incr$, sp;;				    //242 	cc:0
 }
 {   .mmi  //R-Addr: 0X01140 
	ld4	r26=[r27];;				    //242 	cc:1
	adds	r25=-1, r26				    //242 	cc:2
	nop.i	 0;;
 }
 {   .mii  //R-Addr: 0X01150 
	nop.m	 0
	zxt4	r21=r25;;				    //242 	cc:3
	shl	r20=r22, r21;;				    //242 	cc:6
 }
 {   .mmb  //R-Addr: 0X01160 
	st4	[r19]=r20				    //242 	cc:9
	nop.m	 0
	nop.b	 0;;
 }
$LN19@inflate_ta:

// 243  :         while (huff & incr)

 {   .mib  //R-Addr: 0X01170 
	adds	r18=huff$, sp				    //243 	cc:0
	adds	r16=incr$, sp				    //243 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X01180 
	ld4	r17=[r18]				    //243 	cc:1
	ld4	r15=[r16]				    //243 	cc:1
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X01190 
	and	r11=r17, r15;;				    //243 	cc:2
	cmp4.eq.unc p14,p15=r0, r11			    //243 	cc:3
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X011a0 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN18@inflate_ta#;;		    //243 	cc:3
 }

// 244  :             incr >>= 1;

 {   .mib  //R-Addr: 0X011b0 
	adds	r10=incr$, sp				    //244 	cc:0
	adds	r31=incr$, sp				    //244 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X011c0 
	ld4	r9=[r10];;				    //244 	cc:1
	nop.m	 0
	extr.u	r8=r9, 1, 31;;				    //244 	cc:2
 }
 {   .mmb  //R-Addr: 0X011d0 
	st4	[r31]=r8				    //244 	cc:3
	nop.m	 0
	br.cond.sptk.few $LN19@inflate_ta#;;		    //244 	cc:3
 }
$LN18@inflate_ta:

// 245  :         if (incr != 0) {

 {   .mmi  //R-Addr: 0X011e0 
	adds	r30=incr$, sp;;				    //245 	cc:0
	ld4	r29=[r30]				    //245 	cc:1
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X011f0 
	cmp4.eq.unc p14,p15=r0, r29			    //245 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.many $LN17@inflate_ta#;;		    //245 	cc:2
 }

// 246  :             huff &= incr - 1;
// 247  :             huff += incr;
// 248  :         }
// 249  :         else

 {   .mmi  //R-Addr: 0X01200 
	adds	r28=incr$, sp				    //246 	cc:0
	adds	r25=huff$, sp				    //246 	cc:0
	adds	r20=huff$, sp;;				    //246 	cc:0
 }
 {   .mmb  //R-Addr: 0X01210 
	ld4	r27=[r28]				    //246 	cc:1
	ld4	r22=[r25]				    //246 	cc:1
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X01220 
	adds	r26=-1, r27;;				    //246 	cc:2
	and	r21=r22, r26				    //246 	cc:3
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X01230 
	st4	[r20]=r21;;				    //246 	cc:4
	adds	r19=huff$, sp				    //247 	cc:0
	adds	r17=incr$, sp				    //247 	cc:0
 }
 {   .mmi  //R-Addr: 0X01240 
	adds	r11=huff$, sp;;				    //247 	cc:0
	ld4	r18=[r19]				    //247 	cc:1
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X01250 
	ld4	r16=[r17];;				    //247 	cc:1
	add	r15=r18, r16				    //247 	cc:2
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X01260 
	st4	[r11]=r15				    //247 	cc:4
	nop.m	 0
	br.cond.sptk.many $LN16@inflate_ta#;;		    //249 	cc:0
 }
$LN17@inflate_ta:

// 250  :             huff = 0;

 {   .mmi  //R-Addr: 0X01270 
	adds	r10=huff$, sp;;				    //250 	cc:0
	st4	[r10]=r0				    //250 	cc:1
	nop.i	 0;;
 }
$LN16@inflate_ta:

// 251  : 
// 252  :         /* go to next symbol, update count, len */
// 253  :         sym++;
// 254  :         if (--(count[len]) == 0) {

 {   .mib  //R-Addr: 0X01280 
	adds	r9=sym$, sp				    //253 	cc:0
	adds	r30=sym$, sp				    //253 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X01290 
	ld4	r8=[r9];;				    //253 	cc:1
	adds	r31=1, r8				    //253 	cc:2
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X012a0 
	st4	[r30]=r31;;				    //253 	cc:3
	adds	r29=len$, sp				    //254 	cc:0
	adds	r26=count$, sp				    //254 	cc:0
 }
 {   .mmi  //R-Addr: 0X012b0 
	adds	r20=len$, sp				    //254 	cc:0
	adds	r17=count$, sp				    //254 	cc:0
	adds	r15=len$, sp;;				    //254 	cc:0
 }
 {   .mmi  //R-Addr: 0X012c0 
	ld4	r28=[r29]				    //254 	cc:1
	ld4	r19=[r20]				    //254 	cc:1
	adds	r9=count$, sp;;				    //254 	cc:1
 }
 {   .mii  //R-Addr: 0X012d0 
	nop.m	 0
	shl	r27=r28, 1				    //254 	cc:2
	shl	r18=r19, 1;;				    //254 	cc:2
 }
 {   .mib  //R-Addr: 0X012e0 
	add	r25=r26, r27				    //254 	cc:3
	add	r16=r17, r18				    //254 	cc:3
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X012f0 
	ld2	r22=[r25];;				    //254 	cc:4
	adds	r21=-1, r22				    //254 	cc:5
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X01300 
	st2	[r16]=r21				    //254 	cc:6
	ld4	r11=[r15]				    //254 	cc:6
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X01310 
	nop.m	 0
	shl	r10=r11, 1;;				    //254 	cc:7
	add	r8=r9, r10;;				    //254 	cc:8
 }
 {   .mmi  //R-Addr: 0X01320 
	ld2	r31=[r8];;				    //254 	cc:9
	cmp4.ne.unc p14,p15=r0, r31			    //254 	cc:10
	nop.i	 0
 }
 {   .mmb  //R-Addr: 0X01330 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN15@inflate_ta#;;		    //254 	cc:10
 }

// 255  :             if (len == max) break;

 {   .mib  //R-Addr: 0X01340 
	adds	r30=len$, sp				    //255 	cc:0
	adds	r28=max$, sp				    //255 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X01350 
	ld4	r29=[r30]				    //255 	cc:1
	ld4	r27=[r28]				    //255 	cc:1
	nop.b	 0;;
 }
 {   .mbb  //R-Addr: 0X01360 
	cmp4.ne.unc p14,p15=r29, r27			    //255 	cc:2
  (p14)	br.cond.dptk.many $LN14@inflate_ta#		    //255 	cc:2
	br.cond.sptk.few $LN27@inflate_ta#;;		    //255 	cc:2
 }
$LN14@inflate_ta:

// 256  :             len = lens[work[sym]];

 {   .mmi  //R-Addr: 0X01370 
	adds	r26=sym$, sp				    //256 	cc:0
	adds	r21=work$, sp				    //256 	cc:0
	adds	r16=lens$, sp				    //256 	cc:0
 }
 {   .mmi  //R-Addr: 0X01380 
	adds	r9=len$, sp;;				    //256 	cc:0
	ld4	r25=[r26]				    //256 	cc:1
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X01390 
	ld8	r20=[r21];;				    //256 	cc:1
	ld8	r15=[r16]				    //256 	cc:2
	shl	r22=r25, 1;;				    //256 	cc:2
 }
 {   .mmi  //R-Addr: 0X013a0 
	add	r19=r20, r22;;				    //256 	cc:3
	ld2	r18=[r19]				    //256 	cc:4
	nop.i	 0;;
 }
 {   .mii  //R-Addr: 0X013b0 
	nop.m	 0
	shl	r17=r18, 1;;				    //256 	cc:5
	add	r11=r15, r17;;				    //256 	cc:6
 }
 {   .mmi  //R-Addr: 0X013c0 
	ld2	r10=[r11];;				    //256 	cc:7
	st4	[r9]=r10				    //256 	cc:8
	nop.i	 0;;
 }
$LN15@inflate_ta:

// 257  :         }
// 258  : 
// 259  :         /* create new sub-table if needed */
// 260  :         if (len > root && (huff & mask) != low) {

 {   .mib  //R-Addr: 0X013d0 
	adds	r8=len$, sp				    //260 	cc:0
	adds	r30=root$, sp				    //260 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X013e0 
	ld4	r31=[r8]				    //260 	cc:1
	ld4	r29=[r30]				    //260 	cc:1
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X013f0 
	cmp4.leu.unc p14,p15=r31, r29			    //260 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.few $LN13@inflate_ta#;;		    //260 	cc:2
 }

// 260  :         if (len > root && (huff & mask) != low) {

 {   .mmi  //R-Addr: 0X01400 
	adds	r28=huff$, sp				    //260 	cc:3
	adds	r26=mask$, sp				    //260 	cc:3
	adds	r21=low$, sp;;				    //260 	cc:3
 }
 {   .mmb  //R-Addr: 0X01410 
	ld4	r27=[r28]				    //260 	cc:4
	ld4	r25=[r26]				    //260 	cc:4
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X01420 
	ld4	r20=[r21]				    //260 	cc:5
	and	r22=r27, r25;;				    //260 	cc:5
	cmp4.eq.unc p14,p15=r22, r20			    //260 	cc:6
 }
 {   .mmb  //R-Addr: 0X01430 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN13@inflate_ta#;;		    //260 	cc:6
 }

// 261  :             /* if first time, transition to sub-tables */
// 262  :             if (drop == 0)

 {   .mmi  //R-Addr: 0X01440 
	adds	r19=drop$, sp;;				    //262 	cc:0
	ld4	r18=[r19]				    //262 	cc:1
	nop.i	 0;;
 }
 {   .mmb  //R-Addr: 0X01450 
	cmp4.ne.unc p14,p15=r0, r18			    //262 	cc:2
	nop.m	 0
  (p14)	br.cond.dptk.many $LN12@inflate_ta#;;		    //262 	cc:2
 }

// 263  :                 drop = root;

 {   .mib  //R-Addr: 0X01460 
	adds	r17=root$, sp				    //263 	cc:0
	adds	r15=drop$, sp				    //263 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X01470 
	ld4	r16=[r17];;				    //263 	cc:1
	st4	[r15]=r16				    //263 	cc:2
	nop.i	 0;;
 }
$LN12@inflate_ta:

// 264  : 
// 265  :             /* increment past last table */
// 266  :             next += min;            /* here min is 1 << curr */
// 267  : 
// 268  :             /* determine length of next table */
// 269  :             curr = len - drop;
// 270  :             left = (int)(1 << curr);

 {   .mmi  //R-Addr: 0X01480 
	adds	r11=min$, sp				    //266 	cc:0
	adds	r8=next$, sp				    //266 	cc:0
	adds	r29=next$, sp;;				    //266 	cc:0
 }
 {   .mmb  //R-Addr: 0X01490 
	ld4	r10=[r11]				    //266 	cc:1
	ld8	r31=[r8]				    //266 	cc:1
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X014a0 
	nop.m	 0
	shl	r9=r10, 2;;				    //266 	cc:2
	add	r30=r31, r9;;				    //266 	cc:3
 }
 {   .mmi  //R-Addr: 0X014b0 
	st8	[r29]=r30;;				    //266 	cc:4
	adds	r28=len$, sp				    //269 	cc:0
	adds	r26=drop$, sp				    //269 	cc:0
 }
 {   .mmi  //R-Addr: 0X014c0 
	adds	r21=curr$, sp;;				    //269 	cc:0
	ld4	r27=[r28]				    //269 	cc:1
	nop.i	 0
 }
 {   .mmi  //R-Addr: 0X014d0 
	ld4	r25=[r26];;				    //269 	cc:1
	sub	r22=r27, r25				    //269 	cc:2
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X014e0 
	st4	[r21]=r22;;				    //269 	cc:3
	adds	r20=curr$, sp				    //270 	cc:0
	mov	r18=1					    //270 	cc:0
 }
 {   .mmi  //R-Addr: 0X014f0 
	adds	r16=left$, sp;;				    //270 	cc:0
	ld4	r19=[r20]				    //270 	cc:1
	nop.i	 0;;
 }
 {   .mib  //R-Addr: 0X01500 
	nop.m	 0
	shl	r17=r18, r19				    //270 	cc:3
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X01510 
	st4	[r16]=r17				    //270 	cc:6
	nop.m	 0
	nop.b	 0;;
 }
$LN11@inflate_ta:

// 271  :             while (curr + drop < max) {

 {   .mmi  //R-Addr: 0X01520 
	adds	r15=curr$, sp				    //271 	cc:0
	adds	r10=drop$, sp				    //271 	cc:0
	adds	r31=max$, sp;;				    //271 	cc:0
 }
 {   .mmb  //R-Addr: 0X01530 
	ld4	r11=[r15]				    //271 	cc:1
	ld4	r9=[r10]				    //271 	cc:1
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X01540 
	ld4	r30=[r31]				    //271 	cc:2
	add	r8=r11, r9;;				    //271 	cc:2
	cmp4.geu.unc p14,p15=r8, r30			    //271 	cc:3
 }
 {   .mmb  //R-Addr: 0X01550 
	nop.m	 0
	nop.m	 0
  (p14)	br.cond.dptk.few $LN10@inflate_ta#;;		    //271 	cc:3
 }

// 272  :                 left -= count[curr + drop];
// 273  :                 if (left <= 0) break;

 {   .mmi  //R-Addr: 0X01560 
	adds	r29=curr$, sp				    //272 	cc:0
	adds	r27=drop$, sp				    //272 	cc:0
	adds	r20=count$, sp				    //272 	cc:0
 }
 {   .mib  //R-Addr: 0X01570 
	adds	r17=left$, sp				    //272 	cc:0
	adds	r11=left$, sp				    //272 	cc:0
	nop.b	 0;;
 }
 {   .mmb  //R-Addr: 0X01580 
	ld4	r28=[r29]				    //272 	cc:1
	ld4	r26=[r27]				    //272 	cc:1
	nop.b	 0;;
 }
 {   .mii  //R-Addr: 0X01590 
	ld4	r16=[r17]				    //272 	cc:2
	add	r25=r28, r26;;				    //272 	cc:2
	zxt4	r22=r25;;				    //272 	cc:3
 }
 {   .mii  //R-Addr: 0X015a0 
	nop.m	 0
	shl	r21=r22, 1;;				    //272 	cc:4
	add	r19=r20, r21;;				    //272 	cc:5
 }
 {   .mmi  //R-Addr: 0X015b0 
	ld2	r18=[r19];;				    //272 	cc:6
	sub	r15=r16, r18				    //272 	cc:7
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X015c0 
	st4	[r11]=r15;;				    //272 	cc:8
	adds	r10=left$, sp				    //273 	cc:0
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X015d0 
	ld4	r9=[r10];;				    //273 	cc:1
	cmp4.lt.unc p14,p15=r0, r9			    //273 	cc:2
	nop.i	 0
 }
 {   .mbb  //R-Addr: 0X015e0 
	nop.m	 0
  (p14)	br.cond.dptk.few $LN9@inflate_ta#		    //273 	cc:2
	br.cond.sptk.few $LN10@inflate_ta#;;		    //273 	cc:2
 }
$LN9@inflate_ta:

// 274  :                 curr++;
// 275  :                 left <<= 1;
// 276  :             }

 {   .mib  //R-Addr: 0X015f0 
	adds	r8=curr$, sp				    //274 	cc:0
	adds	r29=curr$, sp				    //274 	cc:0
	nop.b	 0;;
 }
 {   .mmi  //R-Addr: 0X01600 
	ld4	r31=[r8];;				    //274 	cc:1
	adds	r30=1, r31				    //274 	cc:2
	nop.i	 0;;
 }
 {   .mmi  //R-Addr: 0X

⌨️ 快捷键说明

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