📄 inftrees.asm
字号:
st2 [r19]=r31 //110 cc:9
nop.m 0
br.cond.sptk.few $LN60@inflate_ta#;; //110 cc:9
}
$LN59@inflate_ta:
// 111 :
// 112 : /* bound code lengths, force root to be within code lengths */
// 113 : root = *bits;
// 114 : for (max = MAXBITS; max >= 1; max--)
{ .mib //R-Addr: 0X0210
adds r18=bits$, sp //113 cc:0
adds r15=root$, sp //113 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0220
ld8 r17=[r18];; //113 cc:1
ld4 r16=[r17] //113 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0230
st4 [r15]=r16;; //113 cc:4
mov r11=15 //114 cc:0
adds r10=max$, sp;; //114 cc:0
}
{ .mmb //R-Addr: 0X0240
st4 [r10]=r11 //114 cc:1
nop.m 0
br.cond.sptk.few $LN58@inflate_ta#;; //114 cc:1
}
$LN57@inflate_ta:
// 114 : for (max = MAXBITS; max >= 1; max--)
{ .mib //R-Addr: 0X0250
adds r9=max$, sp //114 cc:0
adds r30=max$, sp //114 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0260
ld4 r8=[r9];; //114 cc:1
adds r31=-1, r8 //114 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X0270
st4 [r30]=r31 //114 cc:3
nop.m 0
nop.b 0;;
}
$LN58@inflate_ta:
// 114 : for (max = MAXBITS; max >= 1; max--)
{ .mmi //R-Addr: 0X0280
adds r29=max$, sp;; //114 cc:0
ld4 r28=[r29] //114 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X0290
cmp4.gtu.unc p14,p15=1, r28 //114 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN56@inflate_ta#;; //114 cc:2
}
// 115 : if (count[max] != 0) break;
{ .mib //R-Addr: 0X02a0
adds r27=max$, sp //115 cc:0
adds r22=count$, sp //115 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X02b0
ld4 r26=[r27];; //115 cc:1
nop.m 0
shl r25=r26, 1;; //115 cc:2
}
{ .mmi //R-Addr: 0X02c0
add r21=r22, r25;; //115 cc:3
ld2 r20=[r21] //115 cc:4
nop.i 0;;
}
{ .mbb //R-Addr: 0X02d0
cmp4.eq.unc p14,p15=r0, r20 //115 cc:5
(p14) br.cond.dptk.few $LN55@inflate_ta# //115 cc:5
br.cond.sptk.few $LN56@inflate_ta#;; //115 cc:5
}
$LN55@inflate_ta:
// 116 : if (root > max) root = max;
{ .mmb //R-Addr: 0X02e0
nop.m 0
nop.m 0
br.cond.sptk.few $LN57@inflate_ta#;; //116 cc:0
}
$LN56@inflate_ta:
// 116 : if (root > max) root = max;
{ .mib //R-Addr: 0X02f0
adds r19=root$, sp //116 cc:0
adds r17=max$, sp //116 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X0300
ld4 r18=[r19] //116 cc:1
ld4 r16=[r17] //116 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X0310
cmp4.leu.unc p14,p15=r18, r16 //116 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN54@inflate_ta#;; //116 cc:2
}
// 116 : if (root > max) root = max;
{ .mib //R-Addr: 0X0320
adds r15=max$, sp //116 cc:3
adds r10=root$, sp //116 cc:3
nop.b 0;;
}
{ .mmi //R-Addr: 0X0330
ld4 r11=[r15];; //116 cc:4
st4 [r10]=r11 //116 cc:5
nop.i 0;;
}
$LN54@inflate_ta:
// 117 : if (max == 0) { /* no symbols to code at all */
{ .mmi //R-Addr: 0X0340
adds r9=max$, sp;; //117 cc:0
ld4 r8=[r9] //117 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X0350
cmp4.ne.unc p14,p15=r0, r8 //117 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN53@inflate_ta#;; //117 cc:2
}
// 118 : this.op = (unsigned char)64; /* invalid code marker */
// 119 : this.bits = (unsigned char)1;
// 120 : this.val = (unsigned short)0;
// 121 : *(*table)++ = this; /* make a table to force an error */
// 122 : *(*table)++ = this;
// 123 : *bits = 1;
// 124 : return 0; /* no symbols, but wait for decoding to report error */
{ .mib //R-Addr: 0X0360
mov r31=64 //118 cc:0, 00000040H
adds r30=this$, sp //118 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0370
st1 [r30]=r31;; //118 cc:1
mov r29=1 //119 cc:0
adds r28=this$+1, sp;; //119 cc:0
}
{ .mmi //R-Addr: 0X0380
st1 [r28]=r29;; //119 cc:1
adds r27=this$+2, sp //120 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X0390
st2 [r27]=r0;; //120 cc:1
adds r26=table$, sp //121 cc:0
adds r21=this$, sp //121 cc:0
}
{ .mib //R-Addr: 0X03a0
adds r16=table$, sp //121 cc:0
adds r9=table$, sp //121 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X03b0
ld8 r25=[r26] //121 cc:1
ld4 r20=[r21] //121 cc:1
nop.b 0;;
}
{ .mib //R-Addr: 0X03c0
nop.m 0
shr.u r17=r20, 16 //121 cc:2
nop.b 0;;
}
{ .mmi //R-Addr: 0X03d0
ld8 r22=[r25];; //121 cc:3
mov r19=r22 //121 cc:4
adds r18=2, r22;; //121 cc:4
}
{ .mmb //R-Addr: 0X03e0
st2 [r19]=r20 //121 cc:5
st2 [r18]=r17 //121 cc:5
nop.b 0
}
{ .mmb //R-Addr: 0X03f0
ld8 r15=[r16] //121 cc:5
ld8 r8=[r9] //121 cc:5
nop.b 0;;
}
{ .mmi //R-Addr: 0X0400
ld8 r11=[r15];; //121 cc:7
adds r10=4, r11 //121 cc:8
nop.i 0;;
}
{ .mmi //R-Addr: 0X0410
st8 [r8]=r10;; //121 cc:9
adds r31=table$, sp //122 cc:0
adds r28=this$, sp //122 cc:0
}
{ .mib //R-Addr: 0X0420
adds r21=table$, sp //122 cc:0
adds r17=table$, sp //122 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X0430
ld8 r30=[r31] //122 cc:1
ld4 r27=[r28] //122 cc:1
nop.b 0;;
}
{ .mib //R-Addr: 0X0440
nop.m 0
shr.u r22=r27, 16 //122 cc:2
nop.b 0;;
}
{ .mmi //R-Addr: 0X0450
ld8 r29=[r30];; //122 cc:3
mov r26=r29 //122 cc:4
adds r25=2, r29;; //122 cc:4
}
{ .mmb //R-Addr: 0X0460
st2 [r26]=r27 //122 cc:5
st2 [r25]=r22 //122 cc:5
nop.b 0
}
{ .mmb //R-Addr: 0X0470
ld8 r20=[r21] //122 cc:5
ld8 r16=[r17] //122 cc:5
nop.b 0;;
}
{ .mmi //R-Addr: 0X0480
ld8 r19=[r20];; //122 cc:7
adds r18=4, r19 //122 cc:8
nop.i 0;;
}
{ .mmi //R-Addr: 0X0490
st8 [r16]=r18;; //122 cc:9
adds r15=bits$, sp //123 cc:0
mov r10=1;; //123 cc:0
}
{ .mmi //R-Addr: 0X04a0
ld8 r11=[r15];; //123 cc:1
st4 [r11]=r10 //123 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X04b0
mov r8=r0 //124 cc:0
nop.m 0
br.cond.sptk.few $LN65@inflate_ta#;; //124 cc:0
}
$LN53@inflate_ta:
// 125 : }
// 126 : for (min = 1; min <= MAXBITS; min++)
{ .mib //R-Addr: 0X04c0
mov r9=1 //126 cc:0
adds r8=min$, sp //126 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X04d0
st4 [r8]=r9 //126 cc:1
nop.m 0
br.cond.sptk.few $LN52@inflate_ta#;; //126 cc:1
}
$LN51@inflate_ta:
// 126 : for (min = 1; min <= MAXBITS; min++)
{ .mib //R-Addr: 0X04e0
adds r31=min$, sp //126 cc:0
adds r28=min$, sp //126 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X04f0
ld4 r30=[r31];; //126 cc:1
adds r29=1, r30 //126 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X0500
st4 [r28]=r29 //126 cc:3
nop.m 0
nop.b 0;;
}
$LN52@inflate_ta:
// 126 : for (min = 1; min <= MAXBITS; min++)
{ .mmi //R-Addr: 0X0510
adds r27=min$, sp;; //126 cc:0
ld4 r26=[r27] //126 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X0520
cmp4.ltu.unc p14,p15=15, r26 //126 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN50@inflate_ta#;; //126 cc:2
}
// 127 : if (count[min] != 0) break;
{ .mib //R-Addr: 0X0530
adds r25=min$, sp //127 cc:0
adds r20=count$, sp //127 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0540
ld4 r22=[r25];; //127 cc:1
nop.m 0
shl r21=r22, 1;; //127 cc:2
}
{ .mmi //R-Addr: 0X0550
add r19=r20, r21;; //127 cc:3
ld2 r18=[r19] //127 cc:4
nop.i 0;;
}
{ .mbb //R-Addr: 0X0560
cmp4.eq.unc p14,p15=r0, r18 //127 cc:5
(p14) br.cond.dptk.few $LN49@inflate_ta# //127 cc:5
br.cond.sptk.few $LN50@inflate_ta#;; //127 cc:5
}
$LN49@inflate_ta:
// 128 : if (root < min) root = min;
{ .mmb //R-Addr: 0X0570
nop.m 0
nop.m 0
br.cond.sptk.few $LN51@inflate_ta#;; //128 cc:0
}
$LN50@inflate_ta:
// 128 : if (root < min) root = min;
{ .mib //R-Addr: 0X0580
adds r17=root$, sp //128 cc:0
adds r15=min$, sp //128 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X0590
ld4 r16=[r17] //128 cc:1
ld4 r11=[r15] //128 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X05a0
cmp4.geu.unc p14,p15=r16, r11 //128 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN48@inflate_ta#;; //128 cc:2
}
// 128 : if (root < min) root = min;
{ .mib //R-Addr: 0X05b0
adds r10=min$, sp //128 cc:3
adds r8=root$, sp //128 cc:3
nop.b 0;;
}
{ .mmi //R-Addr: 0X05c0
ld4 r9=[r10];; //128 cc:4
st4 [r8]=r9 //128 cc:5
nop.i 0;;
}
$LN48@inflate_ta:
// 129 :
// 130 : /* check for an over-subscribed or incomplete set of lengths */
// 131 : left = 1;
// 132 : for (len = 1; len <= MAXBITS; len++) {
{ .mib //R-Addr: 0X05d0
mov r31=1 //131 cc:0
adds r30=left$, sp //131 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X05e0
st4 [r30]=r31;; //131 cc:1
mov r29=1 //132 cc:0
adds r28=len$, sp;; //132 cc:0
}
{ .mmb //R-Addr: 0X05f0
st4 [r28]=r29 //132 cc:1
nop.m 0
br.cond.sptk.few $LN47@inflate_ta#;; //132 cc:1
}
$LN46@inflate_ta:
// 132 : for (len = 1; len <= MAXBITS; len++) {
{ .mib //R-Addr: 0X0600
adds r27=len$, sp //132 cc:0
adds r22=len$, sp //132 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0610
ld4 r26=[r27];; //132 cc:1
adds r25=1, r26 //132 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X0620
st4 [r22]=r25 //132 cc:3
nop.m 0
nop.b 0;;
}
$LN47@inflate_ta:
// 132 : for (len = 1; len <= MAXBITS; len++) {
{ .mmi //R-Addr: 0X0630
adds r21=len$, sp;; //132 cc:0
ld4 r20=[r21] //132 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X0640
cmp4.ltu.unc p14,p15=15, r20 //132 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN45@inflate_ta#;; //132 cc:2
}
// 133 : left <<= 1;
// 134 : left -= count[len];
// 135 : if (left < 0) return -1; /* over-subscribed */
{ .mib //R-Addr: 0X0650
adds r19=left$, sp //133 cc:0
adds r16=left$, sp //133 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0660
ld4 r18=[r19];; //133 cc:1
nop.m 0
shl r17=r18, 1;; //133 cc:2
}
{ .mmi //R-Addr: 0X0670
st4 [r16]=r17;; //133 cc:3
adds r15=len$, sp //134 cc:0
adds r9=count$, sp //134 cc:0
}
{ .mib //R-Addr: 0X0680
adds r30=left$, sp //134 cc:0
adds r27=left$, sp //134 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X0690
ld4 r11=[r15] //134 cc:1
ld4 r29=[r30] //134 cc:1
nop.b 0;;
}
{ .mii //R-Addr: 0X06a0
nop.m 0
shl r10=r11, 1;; //134 cc:2
add r8=r9, r10;; //134 cc:3
}
{ .mmi //R-Addr: 0X06b0
ld2 r31=[r8];; //134 cc:4
sub r28=r29, r31 //134 cc:5
nop.i 0;;
}
{ .mmi //R-Addr: 0X06c0
st4 [r27]=r28;; //134 cc:6
adds r26=left$, sp //135 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X06d0
ld4 r25=[r26];; //135 cc:1
cmp4.le.unc p14,p15=r0, r25 //135 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X06e0
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN44@inflate_ta#;; //135 cc:2
}
// 135 : if (left < 0) return -1; /* over-subscribed */
{ .mmb //R-Addr: 0X06f0
mov r8=-1 //135 cc:3
nop.m 0
br.cond.sptk.few $LN65@inflate_ta#;; //135 cc:3
}
$LN44@inflate_ta:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -