📄 inftrees.asm
字号:
mov r17=256 //192 cc:0, 00000100H
adds r16=end$, sp;; //192 cc:0
}
{ .mmb //R-Addr: 0X0bc0
st4 [r16]=r17 //192 cc:2
nop.m 0
br.cond.sptk.many $LN33@inflate_ta#;; //193 cc:0
}
$LN30@inflate_ta:
// 194 : default: /* DISTS */
// 195 : base = dbase;
// 196 : extra = dext;
// 197 : end = -1;
{ .mib //R-Addr: 0X0bd0
addl r15=@ltoff(?dbase@?1??inflate_table@@9@9#),gp //195 cc:0
adds r10=base$, sp //195 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0be0
ld8 r11=[r15];; //195 cc:1
st8 [r10]=r11 //195 cc:2
nop.i 0;;
}
{ .mib //R-Addr: 0X0bf0
addl r9=@ltoff(?dext@?1??inflate_table@@9@9#),gp //196 cc:0
adds r31=extra$, sp //196 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0c00
ld8 r8=[r9];; //196 cc:1
st8 [r31]=r8 //196 cc:2
nop.i 0;;
}
{ .mib //R-Addr: 0X0c10
mov r30=-1 //197 cc:0
adds r29=end$, sp //197 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0c20
st4 [r29]=r30;; //197 cc:1
nop.m 0
nop.i 0;;
}
$LN33@inflate_ta:
// 198 : }
// 199 :
// 200 : /* initialize state for loop */
// 201 : huff = 0; /* starting code */
// 202 : sym = 0; /* starting code symbol */
// 203 : len = min; /* starting code length */
// 204 : next = *table; /* current table to fill in */
// 205 : curr = root; /* current table index bits */
// 206 : drop = 0; /* current bits to drop from code for index */
// 207 : low = (unsigned)(-1); /* trigger new sub-table when len > root */
// 208 : used = 1U << root; /* use root table entries */
// 209 : mask = used - 1; /* mask for comparing low */
// 210 :
// 211 : /* check available table space */
// 212 : if (type == LENS && used >= ENOUGH - MAXD)
{ .mmi //R-Addr: 0X0c30
adds r28=huff$, sp;; //201 cc:0
st4 [r28]=r0 //201 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0c40
adds r27=sym$, sp;; //202 cc:0
st4 [r27]=r0 //202 cc:1
nop.i 0;;
}
{ .mib //R-Addr: 0X0c50
adds r26=min$, sp //203 cc:0
adds r22=len$, sp //203 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0c60
ld4 r25=[r26];; //203 cc:1
st4 [r22]=r25 //203 cc:2
nop.i 0;;
}
{ .mib //R-Addr: 0X0c70
adds r21=table$, sp //204 cc:0
adds r18=next$, sp //204 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0c80
ld8 r20=[r21];; //204 cc:1
ld8 r19=[r20] //204 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0c90
st8 [r18]=r19;; //204 cc:4
adds r17=root$, sp //205 cc:0
adds r15=curr$, sp;; //205 cc:0
}
{ .mmi //R-Addr: 0X0ca0
ld4 r16=[r17];; //205 cc:1
st4 [r15]=r16 //205 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0cb0
adds r11=drop$, sp;; //206 cc:0
st4 [r11]=r0 //206 cc:1
nop.i 0;;
}
{ .mib //R-Addr: 0X0cc0
mov r10=-1 //207 cc:0
adds r9=low$, sp //207 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0cd0
st4 [r9]=r10;; //207 cc:1
adds r8=root$, sp //208 cc:0
mov r30=1 //208 cc:0
}
{ .mmi //R-Addr: 0X0ce0
adds r28=used$, sp;; //208 cc:0
ld4 r31=[r8] //208 cc:1
nop.i 0;;
}
{ .mib //R-Addr: 0X0cf0
nop.m 0
shl r29=r30, r31 //208 cc:3
nop.b 0;;
}
{ .mmi //R-Addr: 0X0d00
st4 [r28]=r29;; //208 cc:6
adds r27=used$, sp //209 cc:0
adds r22=mask$, sp;; //209 cc:0
}
{ .mmi //R-Addr: 0X0d10
ld4 r26=[r27];; //209 cc:1
adds r25=-1, r26 //209 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0d20
st4 [r22]=r25;; //209 cc:3
adds r21=type$, sp //212 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X0d30
ld4 r20=[r21];; //212 cc:1
cmp4.ne.unc p14,p15=1, r20 //212 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X0d40
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN28@inflate_ta#;; //212 cc:2
}
// 212 : if (type == LENS && used >= ENOUGH - MAXD)
{ .mib //R-Addr: 0X0d50
adds r19=used$, sp //212 cc:3
mov r17=1456 //212 cc:3, 000005b0H
nop.b 0;;
}
{ .mmi //R-Addr: 0X0d60
ld4 r18=[r19];; //212 cc:4
cmp4.gtu.unc p14,p15=r17, r18 //212 cc:5
nop.i 0
}
{ .mmb //R-Addr: 0X0d70
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN28@inflate_ta#;; //212 cc:5
}
// 213 : return 1;
{ .mmb //R-Addr: 0X0d80
mov r8=1 //213 cc:0
nop.m 0
br.cond.sptk.few $LN65@inflate_ta#;; //213 cc:0
}
$LN28@inflate_ta:
// 214 :
// 215 : /* process all codes and make table entries */
// 216 : for (;;) {
// 217 : /* create table entry */
// 218 : this.bits = (unsigned char)(len - drop);
// 219 : if ((int)(work[sym]) < end) {
{ .mmi //R-Addr: 0X0d90
adds r16=len$, sp //218 cc:0
adds r11=drop$, sp //218 cc:0
adds r8=this$+1, sp;; //218 cc:0
}
{ .mmb //R-Addr: 0X0da0
ld4 r15=[r16] //218 cc:1
ld4 r10=[r11] //218 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X0db0
sub r9=r15, r10;; //218 cc:2
st1 [r8]=r9 //218 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X0dc0
adds r31=sym$, sp //219 cc:0
adds r28=work$, sp //219 cc:0
adds r22=end$, sp;; //219 cc:0
}
{ .mmb //R-Addr: 0X0dd0
ld4 r30=[r31] //219 cc:1
ld8 r27=[r28] //219 cc:1
nop.b 0;;
}
{ .mii //R-Addr: 0X0de0
ld4 r21=[r22] //219 cc:2
shl r29=r30, 1;; //219 cc:2
add r26=r27, r29;; //219 cc:3
}
{ .mmi //R-Addr: 0X0df0
ld2 r25=[r26];; //219 cc:4
cmp4.ge.unc p14,p15=r25, r21 //219 cc:5
nop.i 0
}
{ .mmb //R-Addr: 0X0e00
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN26@inflate_ta#;; //219 cc:5
}
// 220 : this.op = (unsigned char)0;
// 221 : this.val = work[sym];
{ .mmi //R-Addr: 0X0e10
adds r20=this$, sp;; //220 cc:0
st1 [r20]=r0 //220 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0e20
adds r19=sym$, sp //221 cc:0
adds r16=work$, sp //221 cc:0
adds r9=this$+2, sp;; //221 cc:0
}
{ .mmb //R-Addr: 0X0e30
ld4 r18=[r19] //221 cc:1
ld8 r15=[r16] //221 cc:1
nop.b 0;;
}
{ .mii //R-Addr: 0X0e40
nop.m 0
shl r17=r18, 1;; //221 cc:2
add r11=r15, r17;; //221 cc:3
}
{ .mmi //R-Addr: 0X0e50
ld2 r10=[r11];; //221 cc:4
st2 [r9]=r10 //221 cc:5
nop.i 0;;
}
{ .mmb //R-Addr: 0X0e60
nop.m 0
nop.m 0
br.cond.sptk.many $LN25@inflate_ta#;; //221 cc:0
}
$LN26@inflate_ta:
// 222 : }
// 223 : else if ((int)(work[sym]) > end) {
{ .mmi //R-Addr: 0X0e70
adds r8=sym$, sp //223 cc:0
adds r29=work$, sp //223 cc:0
adds r25=end$, sp;; //223 cc:0
}
{ .mmb //R-Addr: 0X0e80
ld4 r31=[r8] //223 cc:1
ld8 r28=[r29] //223 cc:1
nop.b 0;;
}
{ .mii //R-Addr: 0X0e90
ld4 r22=[r25] //223 cc:2
shl r30=r31, 1;; //223 cc:2
add r27=r28, r30;; //223 cc:3
}
{ .mmi //R-Addr: 0X0ea0
ld2 r26=[r27];; //223 cc:4
cmp4.le.unc p14,p15=r26, r22 //223 cc:5
nop.i 0
}
{ .mmb //R-Addr: 0X0eb0
nop.m 0
nop.m 0
(p14) br.cond.dptk.many $LN24@inflate_ta#;; //223 cc:5
}
// 224 : this.op = (unsigned char)(extra[work[sym]]);
// 225 : this.val = base[work[sym]];
// 226 : }
// 227 : else {
{ .mmi //R-Addr: 0X0ec0
adds r21=sym$, sp //224 cc:0
adds r18=work$, sp //224 cc:0
adds r10=extra$, sp //224 cc:0
}
{ .mmi //R-Addr: 0X0ed0
adds r30=this$, sp;; //224 cc:0
ld4 r20=[r21] //224 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X0ee0
ld8 r17=[r18];; //224 cc:1
ld8 r9=[r10] //224 cc:2
shl r19=r20, 1;; //224 cc:2
}
{ .mmi //R-Addr: 0X0ef0
add r16=r17, r19;; //224 cc:3
ld2 r15=[r16] //224 cc:4
nop.i 0;;
}
{ .mii //R-Addr: 0X0f00
nop.m 0
shl r11=r15, 1;; //224 cc:5
add r8=r9, r11;; //224 cc:6
}
{ .mmi //R-Addr: 0X0f10
ld2 r31=[r8];; //224 cc:7
st1 [r30]=r31 //224 cc:8
nop.i 0;;
}
{ .mmi //R-Addr: 0X0f20
adds r29=sym$, sp //225 cc:0
adds r26=work$, sp //225 cc:0
adds r19=base$, sp //225 cc:0
}
{ .mmi //R-Addr: 0X0f30
adds r15=this$+2, sp;; //225 cc:0
ld4 r28=[r29] //225 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X0f40
ld8 r25=[r26];; //225 cc:1
ld8 r18=[r19] //225 cc:2
shl r27=r28, 1;; //225 cc:2
}
{ .mmi //R-Addr: 0X0f50
add r22=r25, r27;; //225 cc:3
ld2 r21=[r22] //225 cc:4
nop.i 0;;
}
{ .mii //R-Addr: 0X0f60
nop.m 0
shl r20=r21, 1;; //225 cc:5
add r17=r18, r20;; //225 cc:6
}
{ .mmi //R-Addr: 0X0f70
ld2 r16=[r17];; //225 cc:7
st2 [r15]=r16 //225 cc:8
nop.i 0;;
}
{ .mmb //R-Addr: 0X0f80
nop.m 0
nop.m 0
br.cond.sptk.many $LN25@inflate_ta#;; //227 cc:0
}
$LN24@inflate_ta:
// 228 : this.op = (unsigned char)(32 + 64); /* end of block */
// 229 : this.val = 0;
{ .mib //R-Addr: 0X0f90
mov r11=96 //228 cc:0, 00000060H
adds r10=this$, sp //228 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0fa0
st1 [r10]=r11;; //228 cc:1
adds r9=this$+2, sp //229 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X0fb0
st2 [r9]=r0;; //229 cc:1
nop.m 0
nop.i 0;;
}
$LN25@inflate_ta:
// 230 : }
// 231 :
// 232 : /* replicate for those indices with low len bits equal to huff */
// 233 : incr = 1U << (len - drop);
// 234 : fill = 1U << curr;
// 235 : min = fill; /* save offset to next table */
{ .mmi //R-Addr: 0X0fc0
adds r8=len$, sp //233 cc:0
adds r30=drop$, sp //233 cc:0
mov r27=1 //233 cc:0
}
{ .mmi //R-Addr: 0X0fd0
adds r22=incr$, sp;; //233 cc:0
ld4 r31=[r8] //233 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X0fe0
ld4 r29=[r30];; //233 cc:1
sub r28=r31, r29 //233 cc:2
nop.i 0;;
}
{ .mii //R-Addr: 0X0ff0
nop.m 0
zxt4 r26=r28;; //233 cc:3
shl r25=r27, r26;; //233 cc:6
}
{ .mmi //R-Addr: 0X01000
st4 [r22]=r25;; //233 cc:9
adds r21=curr$, sp //234 cc:0
mov r19=1 //234 cc:0
}
{ .mmi //R-Addr: 0X01010
adds r17=fill$, sp;; //234 cc:0
ld4 r20=[r21] //234 cc:1
nop.i 0;;
}
{ .mib //R-Addr: 0X01020
nop.m 0
shl r18=r19, r20 //234 cc:3
nop.b 0;;
}
{ .mmi //R-Addr: 0X01030
st4 [r17]=r18;; //234 cc:6
adds r16=fill$, sp //235 cc:0
adds r11=min$, sp;; //235 cc:0
}
{ .mmi //R-Addr: 0X01040
ld4 r15=[r16];; //235 cc:1
st4 [r11]=r15 //235 cc:2
nop.i 0;;
}
$LN22@inflate_ta:
// 236 : do {
// 237 : fill -= incr;
// 238 : next[(huff >> drop) + fill] = this;
// 239 : } while (fill != 0);
{ .mmi //R-Addr: 0X01050
adds r10=fill$, sp //237 cc:0
adds r8=incr$, sp //237 cc:0
adds r29=fill$, sp;; //237 cc:0
}
{ .mmb //R-Addr: 0X01060
ld4 r9=[r10] //237 cc:1
ld4 r31=[r8] //237 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X01070
sub r30=r9, r31;; //237 cc:2
st4 [r29]=r30 //237 cc:3
nop.i 0;;
}
{ .mmi //R-Addr: 0X01080
adds r28=huff$, sp //238 cc:0
adds r26=drop$, sp //238 cc:0
adds r21=fill$, sp //238 cc:0
}
{ .mib //R-Addr: 0X01090
adds r16=next$, sp //238 cc:0
adds r10=this$, sp //238 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X010a0
ld4 r27=[r28] //238 cc:1
ld4 r25=[r26] //238 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X010b0
ld4 r20=[r21] //238 cc:2
ld8 r15=[r16] //238 cc:2
nop.b 0;;
}
{ .mii //R-Addr: 0X010c0
ld4 r9=[r10] //238 cc:3
shr.u r22=r27, r25;; //238 cc:3
shr.u r30=r9, 16;; //238 cc:4
}
{ .mmi //R-Addr: 0X010d0
add r19=r22, r20;; //238 cc:6
nop.m 0
zxt4 r18=r19;; //238 cc:7
}
{ .mii //R-Addr: 0X010e0
nop.m 0
shl r17=r18, 2;; //238 cc:8
add r11=r15, r17;; //238 cc:9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -