📄 inffast.asm
字号:
}
{ .mmi //R-Addr: 0X0980
adds r28=in$, sp //155 cc:0
adds r25=bits$, sp //155 cc:0
adds r20=hold$, sp;; //155 cc:0
}
{ .mii //R-Addr: 0X0990
ld8 r31=[r8] //155 cc:1
adds r17=hold$, sp;; //155 cc:1
adds r30=1, r31;; //155 cc:2
}
{ .mmb //R-Addr: 0X09a0
st8 [r29]=r30 //155 cc:3
ld8 r27=[r28] //155 cc:3
nop.b 0
}
{ .mmi //R-Addr: 0X09b0
ld4 r22=[r25];; //155 cc:3
ld4 r19=[r20] //155 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X09c0
ld1 r26=[r27];; //155 cc:5
nop.m 0
shl r21=r26, r22;; //155 cc:7
}
{ .mmi //R-Addr: 0X09d0
add r18=r19, r21;; //155 cc:10
st4 [r17]=r18 //155 cc:11
nop.i 0;;
}
{ .mib //R-Addr: 0X09e0
adds r16=bits$, sp //156 cc:0
adds r10=bits$, sp //156 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X09f0
ld4 r15=[r16];; //156 cc:1
adds r11=8, r15 //156 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0a00
st4 [r10]=r11;; //156 cc:3
nop.m 0
nop.i 0;;
}
$LN45@inflate_fa:
// 157 : }
// 158 : this = dcode[hold & dmask];
{ .mmi //R-Addr: 0X0a10
adds r9=hold$, sp //158 cc:0
adds r31=dmask$, sp //158 cc:0
adds r26=dcode$, sp //158 cc:0
}
{ .mmi //R-Addr: 0X0a20
adds r16=this$, sp;; //158 cc:0
ld4 r8=[r9] //158 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X0a30
ld4 r30=[r31];; //158 cc:1
ld8 r25=[r26] //158 cc:2
and r29=r8, r30;; //158 cc:2
}
{ .mii //R-Addr: 0X0a40
nop.m 0
zxt4 r28=r29;; //158 cc:3
shl r27=r28, 2;; //158 cc:4
}
{ .mmi //R-Addr: 0X0a50
add r22=r25, r27;; //158 cc:5
mov r21=r22 //158 cc:6
adds r20=2, r22;; //158 cc:6
}
{ .mmb //R-Addr: 0X0a60
ld2 r19=[r21] //158 cc:7
ld2 r18=[r20] //158 cc:7
nop.b 0;;
}
{ .mib //R-Addr: 0X0a70
nop.m 0
dep r17=r18, r19, 16, 16 //158 cc:8
nop.b 0;;
}
{ .mmb //R-Addr: 0X0a80
st4 [r16]=r17 //158 cc:9
nop.m 0
nop.b 0;;
}
$dodist$78835:
// 159 : dodist:
// 160 : op = (unsigned)(this.bits);
// 161 : hold >>= op;
// 162 : bits -= op;
// 163 : op = (unsigned)(this.op);
// 164 : if (op & 16) { /* distance base */
{ .mib //R-Addr: 0X0a90
adds r15=this$+1, sp //160 cc:0
adds r10=op$, sp //160 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0aa0
ld1 r11=[r15];; //160 cc:1
st4 [r10]=r11 //160 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0ab0
adds r9=hold$, sp //161 cc:0
adds r31=op$, sp //161 cc:0
adds r28=hold$, sp;; //161 cc:0
}
{ .mmb //R-Addr: 0X0ac0
ld4 r8=[r9] //161 cc:1
ld4 r30=[r31] //161 cc:1
nop.b 0;;
}
{ .mib //R-Addr: 0X0ad0
nop.m 0
shr.u r29=r8, r30 //161 cc:3
nop.b 0;;
}
{ .mmi //R-Addr: 0X0ae0
st4 [r28]=r29;; //161 cc:6
adds r27=bits$, sp //162 cc:0
adds r25=op$, sp //162 cc:0
}
{ .mmi //R-Addr: 0X0af0
adds r20=bits$, sp;; //162 cc:0
ld4 r26=[r27] //162 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X0b00
ld4 r22=[r25];; //162 cc:1
sub r21=r26, r22 //162 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0b10
st4 [r20]=r21;; //162 cc:3
adds r19=this$, sp //163 cc:0
adds r17=op$, sp;; //163 cc:0
}
{ .mmi //R-Addr: 0X0b20
ld1 r18=[r19];; //163 cc:1
st4 [r17]=r18 //163 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0b30
adds r16=op$, sp;; //164 cc:0
ld4 r15=[r16] //164 cc:1
nop.i 0;;
}
{ .mib //R-Addr: 0X0b40
nop.m 0
tbit.z.unc p14,p15=r15, 4 //164 cc:2
(p14) br.cond.dptk.few $LN44@inflate_fa#;; //164 cc:2
}
// 165 : dist = (unsigned)(this.val);
// 166 : op &= 15; /* number of extra bits */
// 167 : if (bits < op) {
{ .mib //R-Addr: 0X0b50
adds r11=this$+2, sp //165 cc:0
adds r9=dist$, sp //165 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0b60
ld2 r10=[r11];; //165 cc:1
st4 [r9]=r10 //165 cc:2
nop.i 0;;
}
{ .mib //R-Addr: 0X0b70
adds r8=op$, sp //166 cc:0
adds r29=op$, sp //166 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0b80
ld4 r31=[r8];; //166 cc:1
and r30=15, r31 //166 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0b90
st4 [r29]=r30;; //166 cc:3
adds r28=bits$, sp //167 cc:0
adds r26=op$, sp;; //167 cc:0
}
{ .mmb //R-Addr: 0X0ba0
ld4 r27=[r28] //167 cc:1
ld4 r25=[r26] //167 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X0bb0
cmp4.geu.unc p14,p15=r27, r25 //167 cc:2
nop.m 0
(p14) br.cond.dptk.many $LN43@inflate_fa#;; //167 cc:2
}
// 168 : hold += (unsigned long)(PUP(in)) << bits;
// 169 : bits += 8;
// 170 : if (bits < op) {
{ .mmi //R-Addr: 0X0bc0
adds r22=in$, sp //168 cc:0
adds r19=in$, sp //168 cc:0
adds r18=in$, sp //168 cc:0
}
{ .mmi //R-Addr: 0X0bd0
adds r15=bits$, sp //168 cc:0
adds r9=hold$, sp //168 cc:0
adds r30=hold$, sp;; //168 cc:0
}
{ .mmi //R-Addr: 0X0be0
ld8 r21=[r22];; //168 cc:1
adds r20=1, r21 //168 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X0bf0
st8 [r19]=r20 //168 cc:3
ld8 r17=[r18] //168 cc:3
nop.b 0
}
{ .mmi //R-Addr: 0X0c00
ld4 r11=[r15];; //168 cc:3
ld4 r8=[r9] //168 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X0c10
ld1 r16=[r17];; //168 cc:5
nop.m 0
shl r10=r16, r11;; //168 cc:7
}
{ .mmi //R-Addr: 0X0c20
add r31=r8, r10;; //168 cc:10
st4 [r30]=r31 //168 cc:11
nop.i 0;;
}
{ .mib //R-Addr: 0X0c30
adds r29=bits$, sp //169 cc:0
adds r26=bits$, sp //169 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0c40
ld4 r28=[r29];; //169 cc:1
adds r27=8, r28 //169 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0c50
st4 [r26]=r27;; //169 cc:3
adds r25=bits$, sp //170 cc:0
adds r21=op$, sp;; //170 cc:0
}
{ .mmb //R-Addr: 0X0c60
ld4 r22=[r25] //170 cc:1
ld4 r20=[r21] //170 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X0c70
cmp4.geu.unc p14,p15=r22, r20 //170 cc:2
nop.m 0
(p14) br.cond.dptk.many $LN43@inflate_fa#;; //170 cc:2
}
// 171 : hold += (unsigned long)(PUP(in)) << bits;
// 172 : bits += 8;
{ .mmi //R-Addr: 0X0c80
adds r19=in$, sp //171 cc:0
adds r16=in$, sp //171 cc:0
adds r15=in$, sp //171 cc:0
}
{ .mmi //R-Addr: 0X0c90
adds r9=bits$, sp //171 cc:0
adds r30=hold$, sp //171 cc:0
adds r27=hold$, sp;; //171 cc:0
}
{ .mmi //R-Addr: 0X0ca0
ld8 r18=[r19];; //171 cc:1
adds r17=1, r18 //171 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X0cb0
st8 [r16]=r17 //171 cc:3
ld8 r11=[r15] //171 cc:3
nop.b 0
}
{ .mmi //R-Addr: 0X0cc0
ld4 r8=[r9];; //171 cc:3
ld4 r29=[r30] //171 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X0cd0
ld1 r10=[r11];; //171 cc:5
nop.m 0
shl r31=r10, r8;; //171 cc:7
}
{ .mmi //R-Addr: 0X0ce0
add r28=r29, r31;; //171 cc:10
st4 [r27]=r28 //171 cc:11
nop.i 0;;
}
{ .mib //R-Addr: 0X0cf0
adds r26=bits$, sp //172 cc:0
adds r21=bits$, sp //172 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0d00
ld4 r25=[r26];; //172 cc:1
adds r22=8, r25 //172 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0d10
st4 [r21]=r22;; //172 cc:3
nop.m 0
nop.i 0;;
}
$LN43@inflate_fa:
// 173 : }
// 174 : }
// 175 : dist += (unsigned)hold & ((1U << op) - 1);
// 176 : #ifdef INFLATE_STRICT
// 177 : if (dist > dmax) {
// 178 : strm->msg = (char *)"invalid distance too far back";
// 179 : state->mode = BAD;
// 180 : break;
// 181 : }
// 182 : #endif
// 183 : hold >>= op;
// 184 : bits -= op;
// 185 : Tracevv((stderr, "inflate: distance %u\n", dist));
// 186 : op = (unsigned)(out - beg); /* max distance in output */
// 187 : if (dist > op) { /* see if copy from window */
{ .mmi //R-Addr: 0X0d20
adds r20=op$, sp //175 cc:0
mov r18=1 //175 cc:0
adds r15=hold$, sp //175 cc:0
}
{ .mib //R-Addr: 0X0d30
adds r9=dist$, sp //175 cc:0
adds r30=dist$, sp //175 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X0d40
ld4 r19=[r20] //175 cc:1
ld4 r11=[r15] //175 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X0d50
ld4 r8=[r9];; //175 cc:2
nop.m 0
shl r17=r18, r19;; //175 cc:3
}
{ .mmi //R-Addr: 0X0d60
adds r16=-1, r17;; //175 cc:6
and r10=r11, r16 //175 cc:7
nop.i 0;;
}
{ .mmi //R-Addr: 0X0d70
add r31=r8, r10;; //175 cc:8
st4 [r30]=r31 //175 cc:9
nop.i 0;;
}
{ .mmi //R-Addr: 0X0d80
adds r29=hold$, sp //183 cc:0
adds r27=op$, sp //183 cc:0
adds r22=hold$, sp;; //183 cc:0
}
{ .mmb //R-Addr: 0X0d90
ld4 r28=[r29] //183 cc:1
ld4 r26=[r27] //183 cc:1
nop.b 0;;
}
{ .mib //R-Addr: 0X0da0
nop.m 0
shr.u r25=r28, r26 //183 cc:3
nop.b 0;;
}
{ .mmi //R-Addr: 0X0db0
st4 [r22]=r25;; //183 cc:6
adds r21=bits$, sp //184 cc:0
adds r19=op$, sp //184 cc:0
}
{ .mmi //R-Addr: 0X0dc0
adds r16=bits$, sp;; //184 cc:0
ld4 r20=[r21] //184 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X0dd0
ld4 r18=[r19];; //184 cc:1
sub r17=r20, r18 //184 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0de0
st4 [r16]=r17;; //184 cc:3
adds r15=out$, sp //186 cc:0
adds r10=beg$, sp //186 cc:0
}
{ .mmi //R-Addr: 0X0df0
adds r31=op$, sp;; //186 cc:0
ld8 r11=[r15] //186 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X0e00
ld8 r9=[r10];; //186 cc:1
sub r8=r11, r9 //186 cc:2
nop.i 0;;
}
{ .mmi //R-Addr: 0X0e10
st4 [r31]=r8;; //186 cc:3
adds r30=dist$, sp //187 cc:0
adds r28=op$, sp;; //187 cc:0
}
{ .mmb //R-Addr: 0X0e20
ld4 r29=[r30] //187 cc:1
ld4 r27=[r28] //187 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X0e30
cmp4.leu.unc p14,p15=r29, r27 //187 cc:2
nop.m 0
(p14) br.cond.dptk.many $LN41@inflate_fa#;; //187 cc:2
}
// 188 : op = dist - op; /* distance back in window */
// 189 : if (op > whave) {
{ .mmi //R-Addr: 0X0e40
adds r26=dist$, sp //188 cc:0
adds r22=op$, sp //188 cc:0
adds r19=op$, sp;; //188 cc:0
}
{ .mmb //R-Addr: 0X0e50
ld4 r25=[r26] //188 cc:1
ld4 r21=[r22] //188 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X0e60
sub r20=r25, r21;; //188 cc:2
st4 [r19]=r20 //188 cc:3
nop.i 0;;
}
{ .mib //R-Addr: 0X0e70
adds r18=op$, sp //189 cc:0
adds r16=whave$, sp //189 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X0e80
ld4 r17=[r18] //189 cc:1
ld4 r15=[r16] //189 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X0e90
cmp4.leu.unc p14,p15=r17, r15 //189 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN40@inflate_fa#;; //189 cc:2
}
// 190 : strm->msg = (char *)"invalid distance too far back";
// 191 : state->mode = BAD;
// 192 : break;
{ .mib //R-Addr: 0X0ea0
adds r11=strm$, sp //190 cc:0
addl r8=@ltoff($SG78849#),gp //190 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X0eb0
ld8 r10=[r11] //190 cc:1
ld8 r31=[r8] //190 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X0ec0
adds r9=32, r10;; //190 cc:2
st8 [r9]=r31 //190 cc:3
nop.i 0;;
}
{ .mib //R-Addr: 0X0ed0
adds r30=state$, sp //191 cc:0
mov r28=27 //191 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0ee0
ld8 r29=[r30];; //191 cc:1
st4 [r29]=r28 //191 cc:2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -