📄 inftrees.asm
字号:
}
{ .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 + -